)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d2d81a25964b19abb9b68ffd8b65d80ad60edaff","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP]Support L3 plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements dragonflow l3 plugin"},{"line_number":10,"context_line":"support router, router interface and floating ip"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8ebebc40248374a424a14b93f186283a707b5a60"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7aa08908_6f2c9e02","line":10,"updated":"2016-06-13 08:14:56.000000000","message":"is it difficult to separate l3 the existing monolithic plugin (it\u0027s what midonet did) or at least share the code between this plugin and the monolithic plugin?","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"07af6f3038bf1950ddb8371f492e30214206bcb3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP]Support L3 plugin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch implements dragonflow l3 plugin"},{"line_number":10,"context_line":"support router, router interface and floating ip"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8ebebc40248374a424a14b93f186283a707b5a60"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7aa08908_05e58fda","line":10,"in_reply_to":"7aa08908_6f2c9e02","updated":"2016-06-15 02:39:43.000000000","message":"l3 router plugin must adapt to neutron l3 service driver framework. the monolithic plugin will finally be replaced by ml2+l3 plugin, so there is no need to share code between them.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"}],"devstack/plugin.sh":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"a22d4984dd95471d040dfe45fcec61983946c0ad","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# ML2 as core plugin, you can edit local.conf file to configure"},{"line_number":5,"context_line":"# \"USE_ML2_PLUGIN\u003dTrue\" and \"Q_ML2_PLUGIN_MECHANISM_DRIVERS\u003ddf\""},{"line_number":6,"context_line":"# if you want to use df-l3 as the l3 services plugin,, you could edit"},{"line_number":7,"context_line":"# local.conf file to configure \"Q_SERVICE_PLUGIN_CLASSES\u003ddf-l3\""},{"line_number":8,"context_line":"USE_ML2_PLUGIN\u003d${USE_ML2_PLUGIN:-\"False\"}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# The git repo to use"}],"source_content_type":"text/x-sh","patch_set":19,"id":"dada55a8_665e0747","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":62},"updated":"2016-07-18 06:51:41.000000000","message":"This is not correct. The Q_SERVICE_PLUGIN_CLASSES will use $ML2_L3_PLUGIN as default value.\n\nYou should set ML2_L3_PLUGIN\u003ddf-l3 instead of that parameter.\nPlease check\nlib/neutron_plugins/ml2:neutron_plugin_configure_common","commit_id":"a52d4d0160b005d4b1c178550328f3984ffb42f2"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"be198a1d11d85c28a5fa3253f6c996de396ed8e8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# ML2 as core plugin, you can edit local.conf file to configure"},{"line_number":5,"context_line":"# \"USE_ML2_PLUGIN\u003dTrue\" and \"Q_ML2_PLUGIN_MECHANISM_DRIVERS\u003ddf\""},{"line_number":6,"context_line":"# if you want to use df-l3 as the l3 services plugin,, you could edit"},{"line_number":7,"context_line":"# local.conf file to configure \"Q_SERVICE_PLUGIN_CLASSES\u003ddf-l3\""},{"line_number":8,"context_line":"USE_ML2_PLUGIN\u003d${USE_ML2_PLUGIN:-\"False\"}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# The git repo to use"}],"source_content_type":"text/x-sh","patch_set":19,"id":"dada55a8_3c926058","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":62},"in_reply_to":"dada55a8_665e0747","updated":"2016-07-18 07:34:29.000000000","message":"ok, thanks for your suggestion.","commit_id":"a52d4d0160b005d4b1c178550328f3984ffb42f2"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"120eb8b189f3bec6597f9a8b310290d83f927948","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# ML2 as core plugin, you can edit local.conf file to configure"},{"line_number":5,"context_line":"# \"USE_ML2_PLUGIN\u003dTrue\" and \"Q_ML2_PLUGIN_MECHANISM_DRIVERS\u003ddf\""},{"line_number":6,"context_line":"# if you want to use df-l3 as the l3 services plugin,, you could edit"},{"line_number":7,"context_line":"# local.conf file to configure \"Q_SERVICE_PLUGIN_CLASSES\u003ddf-l3\""},{"line_number":8,"context_line":"USE_ML2_PLUGIN\u003d${USE_ML2_PLUGIN:-\"False\"}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# The git repo to use"}],"source_content_type":"text/x-sh","patch_set":20,"id":"dada55a8_41173ba3","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":56},"updated":"2016-07-19 01:55:30.000000000","message":"ML2_L3_PLUGIN?","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"e83bbb7d4b06fe44af243aa58e242e087338c264","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# ML2 as core plugin, you can edit local.conf file to configure"},{"line_number":5,"context_line":"# \"USE_ML2_PLUGIN\u003dTrue\" and \"Q_ML2_PLUGIN_MECHANISM_DRIVERS\u003ddf\""},{"line_number":6,"context_line":"# if you want to use df-l3 as the l3 services plugin,, you could edit"},{"line_number":7,"context_line":"# local.conf file to configure \"Q_SERVICE_PLUGIN_CLASSES\u003ddf-l3\""},{"line_number":8,"context_line":"USE_ML2_PLUGIN\u003d${USE_ML2_PLUGIN:-\"False\"}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# The git repo to use"}],"source_content_type":"text/x-sh","patch_set":20,"id":"dada55a8_b159285d","line":7,"range":{"start_line":7,"start_character":32,"end_line":7,"end_character":56},"in_reply_to":"dada55a8_41173ba3","updated":"2016-07-19 02:47:25.000000000","message":"Done","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"}],"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"822998ca0b9457ad685f743442e26a708b53f39d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        #          for policy."},{"line_number":112,"context_line":"        # DELETED: delete qos policy"},{"line_number":113,"context_line":"        if event_type \u003d\u003d rpc_events.UPDATED:"},{"line_number":114,"context_line":"            self.update_qos_policy(qos_policy)"},{"line_number":115,"context_line":"        elif event_type \u003d\u003d rpc_events.DELETED:"},{"line_number":116,"context_line":"            self.delete_qos_policy(qos_policy)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_abf3659d","line":114,"range":{"start_line":114,"start_character":17,"end_line":114,"end_character":34},"updated":"2016-06-21 03:06:48.000000000","message":"private method should start with \u0027_\u0027","commit_id":"1c47cd9142f74f0650fccc40fef1d0b0c1f0d26f"},{"author":{"_account_id":20960,"name":"wangyongben","email":"wangyongben@huawei.com","username":"wangyonben"},"change_message_id":"85173c5163da3e8caf574a7bed852faff8186c51","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        #          for policy."},{"line_number":112,"context_line":"        # DELETED: delete qos policy"},{"line_number":113,"context_line":"        if event_type \u003d\u003d rpc_events.UPDATED:"},{"line_number":114,"context_line":"            self.update_qos_policy(qos_policy)"},{"line_number":115,"context_line":"        elif event_type \u003d\u003d rpc_events.DELETED:"},{"line_number":116,"context_line":"            self.delete_qos_policy(qos_policy)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_713debba","line":114,"range":{"start_line":114,"start_character":17,"end_line":114,"end_character":34},"in_reply_to":"5a9d85d2_abf3659d","updated":"2016-06-21 07:00:39.000000000","message":"Yes, I will fix it in another patch: https://review.openstack.org/#/c/331932/","commit_id":"1c47cd9142f74f0650fccc40fef1d0b0c1f0d26f"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"822998ca0b9457ad685f743442e26a708b53f39d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            router_external\u003dnetwork[\u0027router:external\u0027],"},{"line_number":268,"context_line":"            mtu\u003dnetwork[\u0027mtu\u0027],"},{"line_number":269,"context_line":"            version\u003dnetwork[\u0027db_version\u0027],"},{"line_number":270,"context_line":"            subnets\u003d[],"},{"line_number":271,"context_line":"            qos_policy_id\u003dnetwork.get(\u0027qos_policy_id\u0027, None))"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        LOG.info(_LI(\"DFMechDriver: update network %s\"), network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_0bd559b8","line":270,"range":{"start_line":270,"start_character":20,"end_line":270,"end_character":22},"updated":"2016-06-21 03:06:48.000000000","message":"you will remove all subnets of the network by setting this para empty.","commit_id":"1c47cd9142f74f0650fccc40fef1d0b0c1f0d26f"},{"author":{"_account_id":20960,"name":"wangyongben","email":"wangyongben@huawei.com","username":"wangyonben"},"change_message_id":"85173c5163da3e8caf574a7bed852faff8186c51","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            router_external\u003dnetwork[\u0027router:external\u0027],"},{"line_number":268,"context_line":"            mtu\u003dnetwork[\u0027mtu\u0027],"},{"line_number":269,"context_line":"            version\u003dnetwork[\u0027db_version\u0027],"},{"line_number":270,"context_line":"            subnets\u003d[],"},{"line_number":271,"context_line":"            qos_policy_id\u003dnetwork.get(\u0027qos_policy_id\u0027, None))"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        LOG.info(_LI(\"DFMechDriver: update network %s\"), network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_b130f3e9","line":270,"range":{"start_line":270,"start_character":20,"end_line":270,"end_character":22},"in_reply_to":"5a9d85d2_0bd559b8","updated":"2016-06-21 07:00:39.000000000","message":"Yes, I will fix it in another patch:https://review.openstack.org/#/c/331932/","commit_id":"1c47cd9142f74f0650fccc40fef1d0b0c1f0d26f"}],"dragonflow/neutron/services/l3_router_plugin.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"2dbbe079903ce4f19d3cbb02376d91d4992411cf","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        return (\"L3 Router Service Plugin for basic L3 forwarding \"\r"},{"line_number":69,"context_line":"                \"using Dragonflow.\")\r"},{"line_number":70,"context_line":"\r"},{"line_number":71,"context_line":"    def create_router(self, context, router):\r"},{"line_number":72,"context_line":"        with context.session.begin(subtransactions\u003dTrue):\r"},{"line_number":73,"context_line":"            router \u003d super(DFL3RouterPlugin, self).create_router(\r"},{"line_number":74,"context_line":"                context, router)\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_9a5cf626","line":71,"range":{"start_line":71,"start_character":3,"end_line":71,"end_character":45},"updated":"2016-05-29 11:01:38.000000000","message":"Please add  @lock_db.wrap_db_lock()\n\nPlease look at plugin.py","commit_id":"9871c6145c5281bd1da43269466396b8c869d7a7"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    router, floatingip and security_group resources and manages associated"},{"line_number":55,"context_line":"    request/response."},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    supported_extension_aliases \u003d [\"router\", \"extraroute\", \"security-group\"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @resource_registry.tracked_resources("},{"line_number":60,"context_line":"        outer\u003dl3_db.Router,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_2f71f344","line":57,"range":{"start_line":57,"start_character":60,"end_line":57,"end_character":74},"updated":"2016-06-13 11:01:02.000000000","message":"suggest putting this to the ml2","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    router, floatingip and security_group resources and manages associated"},{"line_number":55,"context_line":"    request/response."},{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":"    supported_extension_aliases \u003d [\"router\", \"extraroute\", \"security-group\"]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @resource_registry.tracked_resources("},{"line_number":60,"context_line":"        outer\u003dl3_db.Router,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_a508fb91","line":57,"range":{"start_line":57,"start_character":60,"end_line":57,"end_character":74},"in_reply_to":"7aa08908_2f71f344","updated":"2016-06-15 03:39:54.000000000","message":"done","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        tenant_id \u003d router[\u0027tenant_id\u0027]"},{"line_number":95,"context_line":"        is_distributed \u003d router.get(\u0027distributed\u0027, False)"},{"line_number":96,"context_line":"        router_name \u003d router.get(\u0027name\u0027, df_const.DF_RESOURCE_DEFAULT_NAME)"},{"line_number":97,"context_line":"        self.nb_api.create_lrouter(router_id, topic\u003dtenant_id,"},{"line_number":98,"context_line":"                                   name\u003drouter_name,"},{"line_number":99,"context_line":"                                   distributed\u003dis_distributed,"},{"line_number":100,"context_line":"                                   version\u003drouter_version,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_4f2d5fa7","line":97,"range":{"start_line":97,"start_character":20,"end_line":97,"end_character":34},"updated":"2016-06-13 11:01:02.000000000","message":"when create router failed, should we rollback neutron db?","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        tenant_id \u003d router[\u0027tenant_id\u0027]"},{"line_number":95,"context_line":"        is_distributed \u003d router.get(\u0027distributed\u0027, False)"},{"line_number":96,"context_line":"        router_name \u003d router.get(\u0027name\u0027, df_const.DF_RESOURCE_DEFAULT_NAME)"},{"line_number":97,"context_line":"        self.nb_api.create_lrouter(router_id, topic\u003dtenant_id,"},{"line_number":98,"context_line":"                                   name\u003drouter_name,"},{"line_number":99,"context_line":"                                   distributed\u003dis_distributed,"},{"line_number":100,"context_line":"                                   version\u003drouter_version,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_48d32e04","line":97,"range":{"start_line":97,"start_character":20,"end_line":97,"end_character":34},"in_reply_to":"7aa08908_4f2d5fa7","updated":"2016-06-15 03:39:54.000000000","message":"it\u0027s related with database access, we\u0027ll solve this problem in another patch","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            gw_info \u003d router.get(\u0027external_gateway_info\u0027, {})"},{"line_number":114,"context_line":"            if gw_info:"},{"line_number":115,"context_line":"                gw_info.update({\u0027port_id\u0027: router.get(\u0027gw_port_id\u0027)})"},{"line_number":116,"context_line":"            is_distributed \u003d router.get(\u0027distributed\u0027, False)"},{"line_number":117,"context_line":"            self.nb_api.update_lrouter("},{"line_number":118,"context_line":"                router_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_4fa8bf20","line":115,"range":{"start_line":115,"start_character":33,"end_line":115,"end_character":40},"updated":"2016-06-13 11:01:02.000000000","message":"when this port is created?","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        try:"},{"line_number":113,"context_line":"            gw_info \u003d router.get(\u0027external_gateway_info\u0027, {})"},{"line_number":114,"context_line":"            if gw_info:"},{"line_number":115,"context_line":"                gw_info.update({\u0027port_id\u0027: router.get(\u0027gw_port_id\u0027)})"},{"line_number":116,"context_line":"            is_distributed \u003d router.get(\u0027distributed\u0027, False)"},{"line_number":117,"context_line":"            self.nb_api.update_lrouter("},{"line_number":118,"context_line":"                router_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_c806fecc","line":115,"range":{"start_line":115,"start_character":33,"end_line":115,"end_character":40},"in_reply_to":"7aa08908_4fa8bf20","updated":"2016-06-15 03:39:54.000000000","message":"when external_gateway_info is configured, l3_db will create the gateway port if it has not been created.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"ab8cfc532b3aee7d75c8e9237003c6a1086ed3f0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                routes\u003drouter.get(\u0027routes\u0027, []),"},{"line_number":124,"context_line":"                admin_state_up\u003drouter[\u0027admin_state_up\u0027],"},{"line_number":125,"context_line":"                description\u003drouter[\u0027description\u0027],"},{"line_number":126,"context_line":"                gateway\u003d(gw_info if gw_info else {})"},{"line_number":127,"context_line":"            )"},{"line_number":128,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":129,"context_line":"            LOG.debug(\"router %s is not found in DF DB, might have \""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_8d556851","line":126,"updated":"2016-06-14 03:53:02.000000000","message":"Do we need this paremeter gateway here? maybe leave it for create_fip to process.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                routes\u003drouter.get(\u0027routes\u0027, []),"},{"line_number":124,"context_line":"                admin_state_up\u003drouter[\u0027admin_state_up\u0027],"},{"line_number":125,"context_line":"                description\u003drouter[\u0027description\u0027],"},{"line_number":126,"context_line":"                gateway\u003d(gw_info if gw_info else {})"},{"line_number":127,"context_line":"            )"},{"line_number":128,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":129,"context_line":"            LOG.debug(\"router %s is not found in DF DB, might have \""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_a84e1293","line":126,"in_reply_to":"7aa08908_8d556851","updated":"2016-06-15 03:39:54.000000000","message":"what if fip is not used?","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_DF_PLUGIN)"},{"line_number":135,"context_line":"    def delete_router(self, context, router_id):"},{"line_number":136,"context_line":"        router \u003d self.get_router(context, router_id)"},{"line_number":137,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":138,"context_line":"            ret_val \u003d super(DFL3RouterPlugin, self).delete_router(context,"},{"line_number":139,"context_line":"                                                                  router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_af468378","line":136,"range":{"start_line":136,"start_character":22,"end_line":136,"end_character":32},"updated":"2016-06-13 11:01:02.000000000","message":"when the gw port is deleted?","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_DF_PLUGIN)"},{"line_number":135,"context_line":"    def delete_router(self, context, router_id):"},{"line_number":136,"context_line":"        router \u003d self.get_router(context, router_id)"},{"line_number":137,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":138,"context_line":"            ret_val \u003d super(DFL3RouterPlugin, self).delete_router(context,"},{"line_number":139,"context_line":"                                                                  router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_a830d29e","line":136,"range":{"start_line":136,"start_character":22,"end_line":136,"end_character":32},"in_reply_to":"7aa08908_af468378","updated":"2016-06-15 03:39:54.000000000","message":"in l3_db when processing router_delete","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"ade2a802c94564827824e6be7fbfc730da5bdd25","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_DF_PLUGIN)"},{"line_number":135,"context_line":"    def delete_router(self, context, router_id):"},{"line_number":136,"context_line":"        router \u003d self.get_router(context, router_id)"},{"line_number":137,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"},{"line_number":138,"context_line":"            ret_val \u003d super(DFL3RouterPlugin, self).delete_router(context,"},{"line_number":139,"context_line":"                                                                  router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_16c9ab59","line":136,"range":{"start_line":136,"start_character":22,"end_line":136,"end_character":32},"in_reply_to":"7aa08908_af468378","updated":"2016-06-14 01:28:35.000000000","message":"the parent method will handle this，as l3 will create and delete port for routers created with external gw on","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"ade2a802c94564827824e6be7fbfc730da5bdd25","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                try:"},{"line_number":191,"context_line":"                    if floatingip_port:"},{"line_number":192,"context_line":"                        self.nb_api.delete_lport(floatingip_port[\u0027id\u0027],"},{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_3622e752","line":193,"updated":"2016-06-14 01:28:35.000000000","message":"what\u0027s the meaning here? there is no port created by df before.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                try:"},{"line_number":191,"context_line":"                    if floatingip_port:"},{"line_number":192,"context_line":"                        self.nb_api.delete_lport(floatingip_port[\u0027id\u0027],"},{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_48e96ee5","line":193,"in_reply_to":"7aa08908_3622e752","updated":"2016-06-15 03:39:54.000000000","message":"this part is obsolete, I\u0027ll delete it","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"8ce3405ee3ed7c252b1c6877ac7cc52b884de991","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                try:"},{"line_number":191,"context_line":"                    if floatingip_port:"},{"line_number":192,"context_line":"                        self.nb_api.delete_lport(floatingip_port[\u0027id\u0027],"},{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_d4ab3786","line":193,"in_reply_to":"7aa08908_48e96ee5","updated":"2016-06-15 06:22:49.000000000","message":"I made a mistake in the above reply.\nthe floatingip port is created by l3_db, during processing create_floatingip, so it should be deleted if error occurred.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        self.nb_api.create_floatingip("},{"line_number":198,"context_line":"                id\u003dfloatingip_dict[\u0027id\u0027],"},{"line_number":199,"context_line":"                topic\u003dfloatingip_dict[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_5556902a","line":196,"updated":"2016-06-13 11:01:02.000000000","message":"should return here","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        self.nb_api.create_floatingip("},{"line_number":198,"context_line":"                id\u003dfloatingip_dict[\u0027id\u0027],"},{"line_number":199,"context_line":"                topic\u003dfloatingip_dict[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_68a6eaab","line":196,"in_reply_to":"7aa08908_5556902a","updated":"2016-06-15 03:39:54.000000000","message":"I\u0027ll delete above exception processing code, so it\u0027s no need to return here.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"8ce3405ee3ed7c252b1c6877ac7cc52b884de991","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                                 floatingip_port[\u0027tenant_id\u0027])"},{"line_number":194,"context_line":"                except df_exceptions.DBKeyNotFound:"},{"line_number":195,"context_line":"                    pass"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        self.nb_api.create_floatingip("},{"line_number":198,"context_line":"                id\u003dfloatingip_dict[\u0027id\u0027],"},{"line_number":199,"context_line":"                topic\u003dfloatingip_dict[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_b4894b28","line":196,"in_reply_to":"7aa08908_68a6eaab","updated":"2016-06-15 06:22:49.000000000","message":"the processing of exception is just pass, so there is no need to return here.","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            self.nb_api.delete_floatingip(id\u003did,"},{"line_number":243,"context_line":"                                          topic\u003dfloatingip[\u0027tenant_id\u0027])"},{"line_number":244,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":245,"context_line":"            LOG.debug(\"floatingip %s is not found in DF DB, might have \""},{"line_number":246,"context_line":"                      \"been deleted concurrently\" % id)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def get_floatingip(self, context, id, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e011b853","line":245,"range":{"start_line":245,"start_character":16,"end_line":245,"end_character":21},"updated":"2016-06-13 11:01:02.000000000","message":"LOG.exception","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            self.nb_api.delete_floatingip(id\u003did,"},{"line_number":243,"context_line":"                                          topic\u003dfloatingip[\u0027tenant_id\u0027])"},{"line_number":244,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":245,"context_line":"            LOG.debug(\"floatingip %s is not found in DF DB, might have \""},{"line_number":246,"context_line":"                      \"been deleted concurrently\" % id)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def get_floatingip(self, context, id, fields\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_c8bb9ee3","line":245,"range":{"start_line":245,"start_character":16,"end_line":245,"end_character":21},"in_reply_to":"7aa08908_e011b853","updated":"2016-06-15 03:39:54.000000000","message":"ok","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":275,"context_line":"                                                    port[\u0027tenant_id\u0027])"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        self.nb_api.add_lrouter_port(result[\u0027port_id\u0027],"},{"line_number":278,"context_line":"                                     result[\u0027id\u0027],"},{"line_number":279,"context_line":"                                     result[\u0027network_id\u0027],"},{"line_number":280,"context_line":"                                     result[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_607ae889","line":277,"range":{"start_line":277,"start_character":20,"end_line":277,"end_character":36},"updated":"2016-06-13 11:01:02.000000000","message":"rollback neutron db if this operation fails","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":275,"context_line":"                                                    port[\u0027tenant_id\u0027])"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        self.nb_api.add_lrouter_port(result[\u0027port_id\u0027],"},{"line_number":278,"context_line":"                                     result[\u0027id\u0027],"},{"line_number":279,"context_line":"                                     result[\u0027network_id\u0027],"},{"line_number":280,"context_line":"                                     result[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_c8defe0f","line":277,"range":{"start_line":277,"start_character":20,"end_line":277,"end_character":36},"in_reply_to":"7aa08908_607ae889","updated":"2016-06-15 03:39:54.000000000","message":"it\u0027s related with database access, we\u0027ll solve this problem in another patch","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"9180ef22f831993ff0829812999eb1cd6944739d","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                            subnet[\u0027tenant_id\u0027],"},{"line_number":303,"context_line":"                                            router_version\u003drouter_version)"},{"line_number":304,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":305,"context_line":"            LOG.debug(\"logical router %s is not found in DF DB, \""},{"line_number":306,"context_line":"                      \"suppressing delete_lrouter_port \""},{"line_number":307,"context_line":"                      \"exception\" % router_id)"},{"line_number":308,"context_line":"        return new_router"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_40608ccf","line":305,"range":{"start_line":305,"start_character":16,"end_line":305,"end_character":21},"updated":"2016-06-13 11:01:02.000000000","message":"exception","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"6cf24e63089ea2e2c21f4d9ebae9aa389bdddfa0","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                            subnet[\u0027tenant_id\u0027],"},{"line_number":303,"context_line":"                                            router_version\u003drouter_version)"},{"line_number":304,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":305,"context_line":"            LOG.debug(\"logical router %s is not found in DF DB, \""},{"line_number":306,"context_line":"                      \"suppressing delete_lrouter_port \""},{"line_number":307,"context_line":"                      \"exception\" % router_id)"},{"line_number":308,"context_line":"        return new_router"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e8b49af1","line":305,"range":{"start_line":305,"start_character":16,"end_line":305,"end_character":21},"in_reply_to":"7aa08908_40608ccf","updated":"2016-06-15 03:39:54.000000000","message":"ok","commit_id":"24bda54d3693506aeb9e132a0fe823e2684a8c4e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0282f96e5adffda3a5191e1fe6d6c86fa942178c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                       common_db_mixin.CommonDbMixin,"},{"line_number":54,"context_line":"                       extraroute_db.ExtraRoute_db_mixin,"},{"line_number":55,"context_line":"                       l3_gwmode_db.L3_NAT_db_mixin,"},{"line_number":56,"context_line":"                       agentschedulers_db.L3AgentSchedulerDBMixin):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"Implementation of the Dragonflow Neutron L3 Router Service Plugin."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_48958c3e","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":65},"updated":"2016-07-11 06:18:25.000000000","message":"This class is not existed. Please check the latest neutron code.","commit_id":"b05af61875fe2e62f8a23716fb859a87f9feea47"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"46d9458d7711ad8be52dbe182e77ac49b6b1c3ec","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                       common_db_mixin.CommonDbMixin,"},{"line_number":54,"context_line":"                       extraroute_db.ExtraRoute_db_mixin,"},{"line_number":55,"context_line":"                       l3_gwmode_db.L3_NAT_db_mixin,"},{"line_number":56,"context_line":"                       agentschedulers_db.L3AgentSchedulerDBMixin):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"Implementation of the Dragonflow Neutron L3 Router Service Plugin."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1aa78d24_07d33c05","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":65},"in_reply_to":"1aa78d24_48958c3e","updated":"2016-07-12 03:43:31.000000000","message":"ok, I\u0027ve made the modification","commit_id":"b05af61875fe2e62f8a23716fb859a87f9feea47"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"bf794ea48ba3f7118a5ead8248159e758d1b97e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_9fa7674f","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-07-12 08:34:55.000000000","message":"2016","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"398c0a85754df96d1259412f24a56f90d8f26cad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 OpenStack Foundation."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_085cdf7b","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"in_reply_to":"1aa78d24_9fa7674f","updated":"2016-07-12 09:14:34.000000000","message":"Done","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"6b5739fd68215166c38758a07d995bbbda7ccb05","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                       common_db_mixin.CommonDbMixin,"},{"line_number":54,"context_line":"                       extraroute_db.ExtraRoute_db_mixin,"},{"line_number":55,"context_line":"                       l3_gwmode_db.L3_NAT_db_mixin,"},{"line_number":56,"context_line":"                       l3_agentschedulers_db.L3AgentSchedulerDBMixin):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"Implementation of the Dragonflow Neutron L3 Router Service Plugin."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_7fa71ba7","line":56,"range":{"start_line":56,"start_character":45,"end_line":56,"end_character":68},"updated":"2016-07-12 08:24:38.000000000","message":"L3AgentSchedulerDbMixin\n\nDB-\u003eDb","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"398c0a85754df96d1259412f24a56f90d8f26cad","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                       common_db_mixin.CommonDbMixin,"},{"line_number":54,"context_line":"                       extraroute_db.ExtraRoute_db_mixin,"},{"line_number":55,"context_line":"                       l3_gwmode_db.L3_NAT_db_mixin,"},{"line_number":56,"context_line":"                       l3_agentschedulers_db.L3AgentSchedulerDBMixin):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"Implementation of the Dragonflow Neutron L3 Router Service Plugin."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_a874abfd","line":56,"range":{"start_line":56,"start_character":45,"end_line":56,"end_character":68},"in_reply_to":"1aa78d24_7fa71ba7","updated":"2016-07-12 09:14:34.000000000","message":"done","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"bf794ea48ba3f7118a5ead8248159e758d1b97e4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def start_rpc_listeners(self):"},{"line_number":92,"context_line":"        self.topic \u003d topics.L3PLUGIN"},{"line_number":93,"context_line":"        self.conn \u003d n_rpc.create_connection()"},{"line_number":94,"context_line":"        self.agent_notifiers.update("},{"line_number":95,"context_line":"            {const.AGENT_TYPE_L3: l3_rpc_agent_api.L3AgentNotifierAPI()})"},{"line_number":96,"context_line":"        self.endpoints \u003d [l3_rpc.L3RpcCallback()]"},{"line_number":97,"context_line":"        self.conn.create_consumer(self.topic, self.endpoints,"},{"line_number":98,"context_line":"                                  fanout\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_bfd50344","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":73},"updated":"2016-07-12 08:34:55.000000000","message":"It has been set in line 87","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"398c0a85754df96d1259412f24a56f90d8f26cad","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def start_rpc_listeners(self):"},{"line_number":92,"context_line":"        self.topic \u003d topics.L3PLUGIN"},{"line_number":93,"context_line":"        self.conn \u003d n_rpc.create_connection()"},{"line_number":94,"context_line":"        self.agent_notifiers.update("},{"line_number":95,"context_line":"            {const.AGENT_TYPE_L3: l3_rpc_agent_api.L3AgentNotifierAPI()})"},{"line_number":96,"context_line":"        self.endpoints \u003d [l3_rpc.L3RpcCallback()]"},{"line_number":97,"context_line":"        self.conn.create_consumer(self.topic, self.endpoints,"},{"line_number":98,"context_line":"                                  fanout\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_686e4330","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":73},"in_reply_to":"1aa78d24_bfd50344","updated":"2016-07-12 09:14:34.000000000","message":"I\u0027ll change it.","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ac77100fd514dd524762fa6676ff67e75b9d19d8","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":295,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":296,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":297,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":298,"context_line":"                             str(cidr.prefixlen))"},{"line_number":299,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":300,"context_line":"                                                    port[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_22fbbc7c","line":297,"updated":"2016-07-12 08:42:24.000000000","message":"Isn\u0027t this the same information in subnet[\u0027cidr\u0027]?","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"398c0a85754df96d1259412f24a56f90d8f26cad","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":295,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":296,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":297,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":298,"context_line":"                             str(cidr.prefixlen))"},{"line_number":299,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":300,"context_line":"                                                    port[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"1aa78d24_a81dcbbf","line":297,"in_reply_to":"1aa78d24_22fbbc7c","updated":"2016-07-12 09:14:34.000000000","message":"it\u0027s different. the cidr is type of IPNetwork, the network is type of string, like \u00271.1.1.0/24\u0027","commit_id":"9d50e4dd49cfc2b11ca421f32f6f31e75330e7e9"},{"author":{"_account_id":16983,"name":"Eshed Gal-Or","email":"eshed.galor@huawei.com","username":"eshedg"},"change_message_id":"a5c679509259de889c3e55a57bacc3cfd929b17b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                   \"l3_agent_scheduler\"]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @resource_registry.tracked_resources("},{"line_number":67,"context_line":"        outer\u003dl3_db.Router,"},{"line_number":68,"context_line":"        floatingip\u003dl3_db.FloatingIP)"},{"line_number":69,"context_line":"    def __init__(self):"},{"line_number":70,"context_line":"        self.router_scheduler \u003d importutils.import_object("}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_dd1cdd79","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":14},"updated":"2016-07-18 09:38:45.000000000","message":"router\u003d","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"368aa843ddce7cad71bd935cab8562d8ff14141b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                   \"l3_agent_scheduler\"]"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @resource_registry.tracked_resources("},{"line_number":67,"context_line":"        outer\u003dl3_db.Router,"},{"line_number":68,"context_line":"        floatingip\u003dl3_db.FloatingIP)"},{"line_number":69,"context_line":"    def __init__(self):"},{"line_number":70,"context_line":"        self.router_scheduler \u003d importutils.import_object("}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_51738ce7","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":14},"in_reply_to":"dada55a8_dd1cdd79","updated":"2016-07-19 02:45:55.000000000","message":"Done","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"40d77fb341567f3c431b26ca23caaea34d8e3b36","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                                     result[\u0027tenant_id\u0027],"},{"line_number":302,"context_line":"                                     router_version\u003drouter_version,"},{"line_number":303,"context_line":"                                     mac\u003dport[\u0027mac_address\u0027],"},{"line_number":304,"context_line":"                                     network\u003dsubnet[\u0027cidr\u0027],"},{"line_number":305,"context_line":"                                     tunnel_key\u003dlogical_port.get_tunnel_key())"},{"line_number":306,"context_line":"        return result"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_71033043","line":304,"range":{"start_line":304,"start_character":37,"end_line":304,"end_character":60},"updated":"2016-07-19 02:43:18.000000000","message":"the network field value is not the cidr, it should be gw_ip/mask, you can check it from plugin.py","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"368aa843ddce7cad71bd935cab8562d8ff14141b","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                                     result[\u0027tenant_id\u0027],"},{"line_number":302,"context_line":"                                     router_version\u003drouter_version,"},{"line_number":303,"context_line":"                                     mac\u003dport[\u0027mac_address\u0027],"},{"line_number":304,"context_line":"                                     network\u003dsubnet[\u0027cidr\u0027],"},{"line_number":305,"context_line":"                                     tunnel_key\u003dlogical_port.get_tunnel_key())"},{"line_number":306,"context_line":"        return result"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_d1665c28","line":304,"range":{"start_line":304,"start_character":37,"end_line":304,"end_character":60},"in_reply_to":"dada55a8_71033043","updated":"2016-07-19 02:45:55.000000000","message":"subnet[\u0027cidr\u0027] is in the format of gw_ip/mask\nthe code in plugin.py is verbose\nyou can see omer\u0027s previous comment for this","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"de69cb22de244f08a3ca81994be63b9cb6510b76","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                                     result[\u0027tenant_id\u0027],"},{"line_number":302,"context_line":"                                     router_version\u003drouter_version,"},{"line_number":303,"context_line":"                                     mac\u003dport[\u0027mac_address\u0027],"},{"line_number":304,"context_line":"                                     network\u003dsubnet[\u0027cidr\u0027],"},{"line_number":305,"context_line":"                                     tunnel_key\u003dlogical_port.get_tunnel_key())"},{"line_number":306,"context_line":"        return result"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"dada55a8_743b1ed2","line":304,"range":{"start_line":304,"start_character":37,"end_line":304,"end_character":60},"in_reply_to":"dada55a8_d1665c28","updated":"2016-07-19 02:53:16.000000000","message":"it should be like this:\nnetwork\u003d\"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],\n                             str(cidr.prefixlen))\n\nnot the cidr of subnet :)","commit_id":"349c2e6102813da53b705c0e477ab30791d11014"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"9760a6a493474d801d4739a892b6267c7ab18cbe","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        self.core_plugin \u003d self._get_core_plugin()"},{"line_number":293,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":294,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":295,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":296,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":297,"context_line":"                             str(cidr.prefixlen))"},{"line_number":298,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"dada55a8_8bc5c98f","line":295,"range":{"start_line":295,"start_character":15,"end_line":295,"end_character":22},"updated":"2016-07-19 06:39:27.000000000","message":"please import netaddr","commit_id":"670617ea9fa2603a510256748b0bb50f38c2a6ad"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"a4304087cb15dbc6f2501ab6f5eb8b8f38a4dac3","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        self.core_plugin \u003d self._get_core_plugin()"},{"line_number":293,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":294,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":295,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":296,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":297,"context_line":"                             str(cidr.prefixlen))"},{"line_number":298,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"dada55a8_3aeb48b2","line":295,"range":{"start_line":295,"start_character":15,"end_line":295,"end_character":22},"in_reply_to":"dada55a8_8bc5c98f","updated":"2016-07-19 07:43:39.000000000","message":"Done","commit_id":"670617ea9fa2603a510256748b0bb50f38c2a6ad"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7859ce79084c6b915ac9adf290dceda6d7aed480","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    router, floatingip resources and manages associated"},{"line_number":63,"context_line":"    request/response."},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":"    supported_extension_aliases \u003d [\"router\", \"extraroute\","},{"line_number":66,"context_line":"                                   \"l3_agent_scheduler\"]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @resource_registry.tracked_resources("}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_1fe43bdf","line":65,"range":{"start_line":65,"start_character":4,"end_line":65,"end_character":31},"updated":"2016-07-20 06:59:53.000000000","message":"you need to remove these extensions from ml2 driver","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"43c4217177c820bbf531b5601f704b31d90429c8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    router, floatingip resources and manages associated"},{"line_number":63,"context_line":"    request/response."},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":"    supported_extension_aliases \u003d [\"router\", \"extraroute\","},{"line_number":66,"context_line":"                                   \"l3_agent_scheduler\"]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @resource_registry.tracked_resources("}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_c2fbe8bf","line":65,"range":{"start_line":65,"start_character":4,"end_line":65,"end_character":31},"in_reply_to":"dada55a8_1fe43bdf","updated":"2016-07-20 08:05:11.000000000","message":"Done","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7859ce79084c6b915ac9adf290dceda6d7aed480","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                routes\u003drouter.get(\u0027routes\u0027, []),"},{"line_number":150,"context_line":"                admin_state_up\u003drouter[\u0027admin_state_up\u0027],"},{"line_number":151,"context_line":"                description\u003drouter[\u0027description\u0027],"},{"line_number":152,"context_line":"                gateway\u003d(gw_info if gw_info else {})"},{"line_number":153,"context_line":"            )"},{"line_number":154,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":155,"context_line":"            LOG.debug(\"router %s is not found in DF DB, might have \""}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_1f327b5f","line":152,"range":{"start_line":152,"start_character":33,"end_line":152,"end_character":51},"updated":"2016-07-20 06:59:53.000000000","message":"not needed","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"43c4217177c820bbf531b5601f704b31d90429c8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                routes\u003drouter.get(\u0027routes\u0027, []),"},{"line_number":150,"context_line":"                admin_state_up\u003drouter[\u0027admin_state_up\u0027],"},{"line_number":151,"context_line":"                description\u003drouter[\u0027description\u0027],"},{"line_number":152,"context_line":"                gateway\u003d(gw_info if gw_info else {})"},{"line_number":153,"context_line":"            )"},{"line_number":154,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":155,"context_line":"            LOG.debug(\"router %s is not found in DF DB, might have \""}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_422ed843","line":152,"range":{"start_line":152,"start_character":33,"end_line":152,"end_character":51},"in_reply_to":"dada55a8_1f327b5f","updated":"2016-07-20 08:05:11.000000000","message":"Done","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7859ce79084c6b915ac9adf290dceda6d7aed480","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            port_id\u003dfloatingip_dict[\u0027port_id\u0027],"},{"line_number":256,"context_line":"            version\u003dfip_version,"},{"line_number":257,"context_line":"            fixed_ip_address\u003dfloatingip_dict[\u0027fixed_ip_address\u0027],"},{"line_number":258,"context_line":"            status\u003dfloatingip_dict[\u0027status\u0027])"},{"line_number":259,"context_line":"        return floatingip_dict"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_DF_PLUGIN)"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_1f6a7bee","line":258,"range":{"start_line":258,"start_character":19,"end_line":258,"end_character":34},"updated":"2016-07-20 06:59:53.000000000","message":"The status of floatingip is not set by neutron, but reported to neutron by dragonflow.","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"43c4217177c820bbf531b5601f704b31d90429c8","unresolved":false,"context_lines":[{"line_number":255,"context_line":"            port_id\u003dfloatingip_dict[\u0027port_id\u0027],"},{"line_number":256,"context_line":"            version\u003dfip_version,"},{"line_number":257,"context_line":"            fixed_ip_address\u003dfloatingip_dict[\u0027fixed_ip_address\u0027],"},{"line_number":258,"context_line":"            status\u003dfloatingip_dict[\u0027status\u0027])"},{"line_number":259,"context_line":"        return floatingip_dict"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_DF_PLUGIN)"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_e8440bb8","line":258,"range":{"start_line":258,"start_character":19,"end_line":258,"end_character":34},"in_reply_to":"dada55a8_1f6a7bee","updated":"2016-07-20 08:05:11.000000000","message":"yes, it\u0027s unnecessary. I\u0027ll delete.","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7859ce79084c6b915ac9adf290dceda6d7aed480","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                          topic\u003dfloatingip[\u0027tenant_id\u0027])"},{"line_number":270,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":271,"context_line":"            LOG.exception(_LE(\"floatingip %s is not found in DF DB\""},{"line_number":272,"context_line":"                              \"might have been deleted concurrently\") % id)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_floatingip(self, context, id, fields\u003dNone):"},{"line_number":275,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_5f47d376","line":272,"range":{"start_line":272,"start_character":30,"end_line":272,"end_character":67},"updated":"2016-07-20 06:59:53.000000000","message":"The df db has already be protected by the lock, why this possibility exists?","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"8f217b8b4e0be0501b067aa7d2f474a167cda219","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                          topic\u003dfloatingip[\u0027tenant_id\u0027])"},{"line_number":270,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":271,"context_line":"            LOG.exception(_LE(\"floatingip %s is not found in DF DB\""},{"line_number":272,"context_line":"                              \"might have been deleted concurrently\") % id)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_floatingip(self, context, id, fields\u003dNone):"},{"line_number":275,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_f31b60c8","line":272,"range":{"start_line":272,"start_character":30,"end_line":272,"end_character":67},"in_reply_to":"dada55a8_28510337","updated":"2016-07-20 08:23:10.000000000","message":"I think I\u0027d better to modify the description of the log and keep the exception handler here.","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"43c4217177c820bbf531b5601f704b31d90429c8","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                          topic\u003dfloatingip[\u0027tenant_id\u0027])"},{"line_number":270,"context_line":"        except df_exceptions.DBKeyNotFound:"},{"line_number":271,"context_line":"            LOG.exception(_LE(\"floatingip %s is not found in DF DB\""},{"line_number":272,"context_line":"                              \"might have been deleted concurrently\") % id)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def get_floatingip(self, context, id, fields\u003dNone):"},{"line_number":275,"context_line":"        with context.session.begin(subtransactions\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_28510337","line":272,"range":{"start_line":272,"start_character":30,"end_line":272,"end_character":67},"in_reply_to":"dada55a8_5f47d376","updated":"2016-07-20 08:05:11.000000000","message":"yes, it\u0027s unnecessary now.","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"7859ce79084c6b915ac9adf290dceda6d7aed480","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":296,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":297,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":298,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":299,"context_line":"                             str(cidr.prefixlen))"},{"line_number":300,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":301,"context_line":"                                                    port[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_026b4086","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":15},"updated":"2016-07-20 06:59:53.000000000","message":"What\u0027s the difference between \"network\" and \"cidr\"?","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"43c4217177c820bbf531b5601f704b31d90429c8","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        port \u003d self.core_plugin.get_port(context, result[\u0027port_id\u0027])"},{"line_number":296,"context_line":"        subnet \u003d self.core_plugin.get_subnet(context, result[\u0027subnet_id\u0027])"},{"line_number":297,"context_line":"        cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":298,"context_line":"        network \u003d \"%s/%s\" % (port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027],"},{"line_number":299,"context_line":"                             str(cidr.prefixlen))"},{"line_number":300,"context_line":"        logical_port \u003d self.nb_api.get_logical_port(port[\u0027id\u0027],"},{"line_number":301,"context_line":"                                                    port[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"dada55a8_88b46f82","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":15},"in_reply_to":"dada55a8_026b4086","updated":"2016-07-20 08:05:11.000000000","message":"say we had a network which had a subnet 1.1.1.0/24\nwhile the port\u0027s ip 1.1.1.1/24\nthe network is \u00271.1.1.1/24\u0027, while the subnet is \u00271.1.1.0/24\u0027","commit_id":"4ee6b4c02207601a69771eb63534fbca7076c87e"}],"setup.cfg":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"25cc414f884421cd203d9a8ddaeb4f0a6d97c800","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1aa78d24_346551e1","line":61,"updated":"2016-07-02 07:26:43.000000000","message":"neutron.service_plugins \u003d\n    df-l3 \u003d dragonflow.neutron.services.l3_router_...","commit_id":"ec9b98e3660382c0b792b943bc667d6075f6eb24"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"5a32ca3bcdd14d2d038e079d1599652f078aaf2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1aa78d24_5b6e0602","line":61,"in_reply_to":"1aa78d24_346551e1","updated":"2016-07-05 06:11:07.000000000","message":"Done","commit_id":"ec9b98e3660382c0b792b943bc667d6075f6eb24"}]}
