)]}'
{"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"42fd82d70fd6dc7d5656692421da6e7416438a85","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        # https://bugs.launchpad.net/neutron/+bug/1739798 is fixed."},{"line_number":389,"context_line":"        if context._plugin_context.session.is_active:"},{"line_number":390,"context_line":"            return"},{"line_number":391,"context_line":"        self._ovn_client.update_network(None,"},{"line_number":392,"context_line":"                                        context.current)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def delete_network_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_2225d4ad","line":391,"range":{"start_line":391,"start_character":40,"end_line":391,"end_character":44},"updated":"2020-02-06 16:19:13.000000000","message":"I don\u0027t understand this, sorry","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"413e7a2c8b219b7b16e9e74036773906f96c1f60","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        # https://bugs.launchpad.net/neutron/+bug/1739798 is fixed."},{"line_number":389,"context_line":"        if context._plugin_context.session.is_active:"},{"line_number":390,"context_line":"            return"},{"line_number":391,"context_line":"        self._ovn_client.update_network(None,"},{"line_number":392,"context_line":"                                        context.current)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def delete_network_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_05b222e9","line":391,"range":{"start_line":391,"start_character":40,"end_line":391,"end_character":44},"in_reply_to":"3fa7e38b_2225d4ad","updated":"2020-02-06 17:35:02.000000000","message":"This was so that update_network() used admin_context, the tests failed if I passed context or context._plugin_context along.\n\nThis was part of the problem I had with this change - what context should I be passing?  Since delete_network() used _plugin_context I figured that was correct, but I didn\u0027t want to introduce some strange case where that was wrong.","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        port \u003d copy.deepcopy(context.current)"},{"line_number":533,"context_line":"        port[\u0027network\u0027] \u003d context.network.current"},{"line_number":534,"context_line":"        self._ovn_client.create_port(context._plugin_context, port)"},{"line_number":535,"context_line":"        self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def update_port_precommit(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7cafc4e0","line":534,"range":{"start_line":534,"start_character":45,"end_line":534,"end_character":60},"updated":"2020-02-10 15:24:43.000000000","message":"That is always context with admin rights?","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        \"\"\""},{"line_number":532,"context_line":"        port \u003d copy.deepcopy(context.current)"},{"line_number":533,"context_line":"        port[\u0027network\u0027] \u003d context.network.current"},{"line_number":534,"context_line":"        self._ovn_client.create_port(context._plugin_context, port)"},{"line_number":535,"context_line":"        self._notify_dhcp_updated(port[\u0027id\u0027])"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def update_port_precommit(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e7e31802","line":534,"range":{"start_line":534,"start_character":45,"end_line":534,"end_character":60},"in_reply_to":"3fa7e38b_7cafc4e0","updated":"2020-02-10 22:23:50.000000000","message":"I don\u0027t know, but since this is called from create_port() I don\u0027t think that\u0027s always true.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"15cd7a2eda9c367ffa0de69e68cb7fbe29d1e4a0","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        LOG.info(\u0027Maintenance task: Synchronization finished \u0027"},{"line_number":323,"context_line":"                 \u0027(took %.2f seconds)\u0027, self._sync_timer.elapsed())"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def _create_lrouter_port(self, port):"},{"line_number":326,"context_line":"        admin_context \u003d n_context.get_admin_context()"},{"line_number":327,"context_line":"        router_id \u003d port[\u0027device_id\u0027]"},{"line_number":328,"context_line":"        self._ovn_client._l3_plugin.add_router_interface("}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_cd79b893","line":325,"updated":"2020-02-27 15:27:59.000000000","message":"This needs a context argument as well, can get rid of admin_context below.","commit_id":"abe886c6dca56effc78750e3548f29163a15c396"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bb88698cae23703b3a04489b586b3b3b8a0aabd9","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                                port, ovn_const.TYPE_PORTS))}"},{"line_number":298,"context_line":"        lswitch_name \u003d utils.ovn_name(port[\u0027network_id\u0027])"},{"line_number":299,"context_line":"        if not context:"},{"line_number":300,"context_line":"            context \u003d n_context.get_admin_context()"},{"line_number":301,"context_line":"        sg_cache \u003d {}"},{"line_number":302,"context_line":"        subnet_cache \u003d {}"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7c49322d","line":300,"updated":"2020-02-06 15:50:08.000000000","message":"I think I want to get rid of these lines, and make the caller always pass a context in.","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"42fd82d70fd6dc7d5656692421da6e7416438a85","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                                port, ovn_const.TYPE_PORTS))}"},{"line_number":298,"context_line":"        lswitch_name \u003d utils.ovn_name(port[\u0027network_id\u0027])"},{"line_number":299,"context_line":"        if not context:"},{"line_number":300,"context_line":"            context \u003d n_context.get_admin_context()"},{"line_number":301,"context_line":"        sg_cache \u003d {}"},{"line_number":302,"context_line":"        subnet_cache \u003d {}"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fc420267","line":300,"in_reply_to":"3fa7e38b_7c49322d","updated":"2020-02-06 16:19:13.000000000","message":"I don\u0027t understand this part. The context should be always there, shouldn\u0027t it?","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"413e7a2c8b219b7b16e9e74036773906f96c1f60","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                                port, ovn_const.TYPE_PORTS))}"},{"line_number":298,"context_line":"        lswitch_name \u003d utils.ovn_name(port[\u0027network_id\u0027])"},{"line_number":299,"context_line":"        if not context:"},{"line_number":300,"context_line":"            context \u003d n_context.get_admin_context()"},{"line_number":301,"context_line":"        sg_cache \u003d {}"},{"line_number":302,"context_line":"        subnet_cache \u003d {}"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_45bfbaaa","line":300,"in_reply_to":"3fa7e38b_fc420267","updated":"2020-02-06 17:35:02.000000000","message":"Not if the caller passes None.  I\u0027ll remove these in an update.","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"42fd82d70fd6dc7d5656692421da6e7416438a85","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"        if check_rev_cmd.result \u003d\u003d ovn_const.TXN_COMMITTED:"},{"line_number":1987,"context_line":"            db_rev.bump_revision(context, subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1988,"context_line":""},{"line_number":1989,"context_line":"    def delete_subnet(self, subnet_id):"},{"line_number":1990,"context_line":"        admin_context \u003d n_context.get_admin_context()"},{"line_number":1991,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1992,"context_line":"            self._remove_subnet_dhcp_options(subnet_id, txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c202c008","line":1989,"updated":"2020-02-06 16:19:13.000000000","message":"This method is called from the mech_driver, and delete_subnet_postcommit has a context. IMO, this ctx should be used.","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"413e7a2c8b219b7b16e9e74036773906f96c1f60","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"        if check_rev_cmd.result \u003d\u003d ovn_const.TXN_COMMITTED:"},{"line_number":1987,"context_line":"            db_rev.bump_revision(context, subnet, ovn_const.TYPE_SUBNETS)"},{"line_number":1988,"context_line":""},{"line_number":1989,"context_line":"    def delete_subnet(self, subnet_id):"},{"line_number":1990,"context_line":"        admin_context \u003d n_context.get_admin_context()"},{"line_number":1991,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1992,"context_line":"            self._remove_subnet_dhcp_options(subnet_id, txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_25039e77","line":1989,"in_reply_to":"3fa7e38b_c202c008","updated":"2020-02-06 17:35:02.000000000","message":"Must have missed this one, will update.","commit_id":"922156285697791cbe5796db7215adb829e89b9c"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def _get_nets_and_ipv6_ra_confs_for_router_port("},{"line_number":1022,"context_line":"            self, port_fixed_ips):"},{"line_number":1023,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":1024,"context_line":"        networks \u003d set()"},{"line_number":1025,"context_line":"        ipv6_ra_configs \u003d {}"},{"line_number":1026,"context_line":"        ipv6_ra_configs_supported \u003d self._nb_idl.is_col_present("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5cb8c8c5","line":1023,"range":{"start_line":1023,"start_character":5,"end_line":1023,"end_character":47},"updated":"2020-02-10 15:24:43.000000000","message":"This could be removed. We don\u0027t need admin_context to get network MTU.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    def _get_nets_and_ipv6_ra_confs_for_router_port("},{"line_number":1022,"context_line":"            self, port_fixed_ips):"},{"line_number":1023,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":1024,"context_line":"        networks \u003d set()"},{"line_number":1025,"context_line":"        ipv6_ra_configs \u003d {}"},{"line_number":1026,"context_line":"        ipv6_ra_configs_supported \u003d self._nb_idl.is_col_present("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_478f8c20","line":1023,"range":{"start_line":1023,"start_character":5,"end_line":1023,"end_character":47},"in_reply_to":"3fa7e38b_5cb8c8c5","updated":"2020-02-10 22:23:50.000000000","message":"Done","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"        gw_port_id \u003d router[\u0027gw_port_id\u0027]"},{"line_number":1052,"context_line":"        port \u003d self._plugin.get_port(context, gw_port_id)"},{"line_number":1053,"context_line":"        self._create_lrouter_port(router_id, port, txn\u003dtxn)"},{"line_number":1054,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"        def _build_extids(gw_info):"},{"line_number":1057,"context_line":"            # TODO(lucasagomes): Remove this check after OVS 2.8.2 is tagged"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7cbca4b5","line":1054,"range":{"start_line":1054,"start_character":8,"end_line":1054,"end_character":15},"updated":"2020-02-10 15:24:43.000000000","message":"Is this needed?","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"        gw_port_id \u003d router[\u0027gw_port_id\u0027]"},{"line_number":1052,"context_line":"        port \u003d self._plugin.get_port(context, gw_port_id)"},{"line_number":1053,"context_line":"        self._create_lrouter_port(router_id, port, txn\u003dtxn)"},{"line_number":1054,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"        def _build_extids(gw_info):"},{"line_number":1057,"context_line":"            # TODO(lucasagomes): Remove this check after OVS 2.8.2 is tagged"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_27c3703b","line":1054,"range":{"start_line":1054,"start_character":8,"end_line":1054,"end_character":15},"in_reply_to":"3fa7e38b_7cbca4b5","updated":"2020-02-10 22:23:50.000000000","message":"Might have been left over from debugging.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1176,"context_line":"            # by the ovn_db_sync.py script, remove it after the database"},{"line_number":1177,"context_line":"            # synchronization work"},{"line_number":1178,"context_line":"            if add_external_gateway:"},{"line_number":1179,"context_line":"                networks \u003d self._get_v4_network_of_all_router_ports("},{"line_number":1180,"context_line":"                    context, router[\u0027id\u0027])"},{"line_number":1181,"context_line":"                if router.get(l3.EXTERNAL_GW_INFO) and networks is not None:"},{"line_number":1182,"context_line":"                    added_gw_port \u003d self._add_router_ext_gw("},{"line_number":1183,"context_line":"                        context, router, networks, txn)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3c85cc0a","line":1180,"range":{"start_line":1179,"start_character":17,"end_line":1180,"end_character":42},"updated":"2020-02-10 15:24:43.000000000","message":"Ok, using passed context instead admin_context should be fine here.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                if gateway_new and not gateway_old:"},{"line_number":1214,"context_line":"                    # Route gateway is set"},{"line_number":1215,"context_line":"                    added_gw_port \u003d self._add_router_ext_gw("},{"line_number":1216,"context_line":"                        admin_context, new_router, networks, txn)"},{"line_number":1217,"context_line":"                elif gateway_old and not gateway_new:"},{"line_number":1218,"context_line":"                    # router gateway is removed"},{"line_number":1219,"context_line":"                    txn.add(self._nb_idl.delete_lrouter_ext_gw(router_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3c906cf3","line":1216,"range":{"start_line":1216,"start_character":24,"end_line":1216,"end_character":37},"updated":"2020-02-10 15:24:43.000000000","message":"We can use passed context here. I don\u0027t see any admin-kind calls needed in _add_router_ext_gw.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"                if gateway_new and not gateway_old:"},{"line_number":1214,"context_line":"                    # Route gateway is set"},{"line_number":1215,"context_line":"                    added_gw_port \u003d self._add_router_ext_gw("},{"line_number":1216,"context_line":"                        admin_context, new_router, networks, txn)"},{"line_number":1217,"context_line":"                elif gateway_old and not gateway_new:"},{"line_number":1218,"context_line":"                    # router gateway is removed"},{"line_number":1219,"context_line":"                    txn.add(self._nb_idl.delete_lrouter_ext_gw(router_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c7a29c98","line":1216,"range":{"start_line":1216,"start_character":24,"end_line":1216,"end_character":37},"in_reply_to":"3fa7e38b_3c906cf3","updated":"2020-02-10 22:23:50.000000000","message":"I was seeing test failures without it, i\u0027ll try without it.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                elif gateway_new and gateway_old:"},{"line_number":1225,"context_line":"                    # Check if external gateway has changed, if yes, delete"},{"line_number":1226,"context_line":"                    # the old gateway and add the new gateway"},{"line_number":1227,"context_line":"                    if self._check_external_ips_changed("},{"line_number":1228,"context_line":"                            admin_context, ovn_snats, gateway_old, new_router):"},{"line_number":1229,"context_line":"                        txn.add(self._nb_idl.delete_lrouter_ext_gw("},{"line_number":1230,"context_line":"                            router_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_fc95f4e2","line":1227,"range":{"start_line":1227,"start_character":28,"end_line":1227,"end_character":55},"updated":"2020-02-10 15:24:43.000000000","message":"Same, imo we don\u0027t need admin_context here.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                elif gateway_new and gateway_old:"},{"line_number":1225,"context_line":"                    # Check if external gateway has changed, if yes, delete"},{"line_number":1226,"context_line":"                    # the old gateway and add the new gateway"},{"line_number":1227,"context_line":"                    if self._check_external_ips_changed("},{"line_number":1228,"context_line":"                            admin_context, ovn_snats, gateway_old, new_router):"},{"line_number":1229,"context_line":"                        txn.add(self._nb_idl.delete_lrouter_ext_gw("},{"line_number":1230,"context_line":"                            router_name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e79f984b","line":1227,"range":{"start_line":1227,"start_character":28,"end_line":1227,"end_character":55},"in_reply_to":"3fa7e38b_fc95f4e2","updated":"2020-02-10 22:23:50.000000000","message":"So here it seems the call to _get_gw_info() requires it?","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5b715bd36e110f7dd1a9cc1f7b383e417b100a66","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"    # TODO(lucasagomes): The ``router_object`` parameter was added to"},{"line_number":1192,"context_line":"    # keep things backward compatible with old routers created prior to"},{"line_number":1193,"context_line":"    # the database sync work. Remove it in the Rocky release."},{"line_number":1194,"context_line":"    def update_router(self, context, new_router, router_object\u003dNone):"},{"line_number":1195,"context_line":"        \"\"\"Update a logical router.\"\"\""},{"line_number":1196,"context_line":"        router_id \u003d new_router[\u0027id\u0027]"},{"line_number":1197,"context_line":"        router_name \u003d utils.ovn_name(router_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b4e621af","line":1194,"range":{"start_line":1194,"start_character":49,"end_line":1194,"end_character":62},"updated":"2020-02-19 13:22:45.000000000","message":"no action needed for this patch but I think we should finally remove it now as we are far from the Rocky release :)","commit_id":"739553ba7be5a0563bb607d9acd438243a43f082"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"085f287c2b9850de4c235822402eedc629c969fa","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                    allowed_address_pairs and"},{"line_number":361,"context_line":"                    port_info.type !\u003d ovn_const.LSP_TYPE_VIRTUAL):"},{"line_number":362,"context_line":"                addrs \u003d [addr[\u0027ip_address\u0027] for addr in allowed_address_pairs]"},{"line_number":363,"context_line":"                self._set_unset_virtual_port_type(context, txn, port, addrs)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"            port_cmd \u003d txn.add(self._nb_idl.create_lswitch_port("},{"line_number":366,"context_line":"                **kwargs))"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_4b7d6b7d","line":363,"updated":"2020-03-03 20:43:05.000000000","message":"I wonder if this is causing the current failure, and if it needs to always use admin context.  I\u0027ll recheck once more.","commit_id":"d2b0cd3e885110883ec334fdbbdff182d77d205b"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"26c78a27498089a83eff0a4dcd54664710716a47","unresolved":false,"context_lines":[{"line_number":642,"context_line":"                    LOG.warning(\"Creating the router port %s in OVN NB DB\","},{"line_number":643,"context_line":"                                rrport[\u0027id\u0027])"},{"line_number":644,"context_line":"                    self._ovn_client._create_lrouter_port("},{"line_number":645,"context_line":"                        rrport[\u0027device_id\u0027], rrport)"},{"line_number":646,"context_line":"                except RuntimeError:"},{"line_number":647,"context_line":"                    LOG.warning(\"Create router port in OVN \""},{"line_number":648,"context_line":"                                \"NB failed for router port %s\", rrport[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_4d4d6d6e","line":645,"updated":"2020-02-10 23:28:11.000000000","message":"need to add context arg here","commit_id":"e794305f97309339da0fade1d393ed865897694f"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"        mock_update_port.assert_not_called()"},{"line_number":1517,"context_line":"        mock_notify_dhcp.assert_not_called()"},{"line_number":1518,"context_line":"        self.plugin.update_port_status.assert_called_once_with("},{"line_number":1519,"context_line":"            mock.ANY, fake_port[\u0027id\u0027], const.PORT_STATUS_ACTIVE)"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def _add_chassis_agent(self, nb_cfg, agent_type, updated_at\u003dNone):"},{"line_number":1522,"context_line":"        chassis \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9cb3a035","line":1519,"range":{"start_line":1519,"start_character":12,"end_line":1519,"end_character":20},"updated":"2020-02-10 15:24:43.000000000","message":"Can we ensure that this is executed with admin/plugin context?","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"016453faeb0f7a417bfe71e9c402a68dbbe42200","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"        mock_update_port.assert_not_called()"},{"line_number":1517,"context_line":"        mock_notify_dhcp.assert_not_called()"},{"line_number":1518,"context_line":"        self.plugin.update_port_status.assert_called_once_with("},{"line_number":1519,"context_line":"            mock.ANY, fake_port[\u0027id\u0027], const.PORT_STATUS_ACTIVE)"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def _add_chassis_agent(self, nb_cfg, agent_type, updated_at\u003dNone):"},{"line_number":1522,"context_line":"        chassis \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f2b2f430","line":1519,"range":{"start_line":1519,"start_character":12,"end_line":1519,"end_character":20},"in_reply_to":"3fa7e38b_9cb3a035","updated":"2020-02-10 22:23:50.000000000","message":"Does this need admin context?  I can put a _plugin_context element in the mock and make sure that is called.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a3068310507a389ae06f62d52a78a0156d59ee45","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"        mock_update_port.assert_not_called()"},{"line_number":1517,"context_line":"        mock_notify_dhcp.assert_not_called()"},{"line_number":1518,"context_line":"        self.plugin.update_port_status.assert_called_once_with("},{"line_number":1519,"context_line":"            mock.ANY, fake_port[\u0027id\u0027], const.PORT_STATUS_ACTIVE)"},{"line_number":1520,"context_line":""},{"line_number":1521,"context_line":"    def _add_chassis_agent(self, nb_cfg, agent_type, updated_at\u003dNone):"},{"line_number":1522,"context_line":"        chassis \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_53674053","line":1519,"range":{"start_line":1519,"start_character":12,"end_line":1519,"end_character":20},"in_reply_to":"3fa7e38b_f2b2f430","updated":"2020-02-11 15:29:36.000000000","message":"I think plugin_context is ok.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f46233de7e50c056189e55b3e02f41806dc627c7","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                portbindings.PROFILE: {ovn_const.MIGRATING_ATTR: \u0027foo\u0027},"},{"line_number":1512,"context_line":"                portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()"},{"line_number":1513,"context_line":"        fake_ctx \u003d mock.Mock(current\u003dfake_port, original\u003dfake_port,"},{"line_number":1514,"context_line":"                             _plugin_context\u003dfake_context)"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"        self.mech_driver.update_port_postcommit(fake_ctx)"},{"line_number":1517,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_533660ea","line":1514,"updated":"2020-02-11 14:56:00.000000000","message":"Maciej - was this what you wanted here?","commit_id":"739553ba7be5a0563bb607d9acd438243a43f082"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"acc30b6467392ef78861c8e4e80691e0cd0b31c2","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                portbindings.PROFILE: {ovn_const.MIGRATING_ATTR: \u0027foo\u0027},"},{"line_number":1512,"context_line":"                portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()"},{"line_number":1513,"context_line":"        fake_ctx \u003d mock.Mock(current\u003dfake_port, original\u003dfake_port,"},{"line_number":1514,"context_line":"                             _plugin_context\u003dfake_context)"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"        self.mech_driver.update_port_postcommit(fake_ctx)"},{"line_number":1517,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d346d07e","line":1514,"in_reply_to":"3fa7e38b_533660ea","updated":"2020-02-11 15:38:33.000000000","message":"Ok, thats fine :)","commit_id":"739553ba7be5a0563bb607d9acd438243a43f082"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"193d2c4f91b5885adf534d85ab71304010a9f8a7","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"                portbindings.PROFILE: {ovn_const.MIGRATING_ATTR: \u0027foo\u0027},"},{"line_number":1512,"context_line":"                portbindings.VIF_TYPE: portbindings.VIF_TYPE_OVS}).info()"},{"line_number":1513,"context_line":"        fake_ctx \u003d mock.Mock(current\u003dfake_port, original\u003dfake_port,"},{"line_number":1514,"context_line":"                             _plugin_context\u003dfake_context)"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":"        self.mech_driver.update_port_postcommit(fake_ctx)"},{"line_number":1517,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_becc3bbe","line":1514,"in_reply_to":"3fa7e38b_d346d07e","updated":"2020-02-11 15:55:09.000000000","message":"Well I can put the mock.ANY back too like all the other places :)","commit_id":"739553ba7be5a0563bb607d9acd438243a43f082"}],"neutron/tests/unit/services/ovn_l3/test_plugin.py":[{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f469bb766bc85721c4674c1c0fb1386ef1eecb6d","unresolved":false,"context_lines":[{"line_number":442,"context_line":"                lsp_address\u003dovn_const.DEFAULT_ADDR_FOR_LSP_WITH_PEER)"},{"line_number":443,"context_line":"        self.l3_inst._ovn.add_static_route.assert_has_calls(expected_calls)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        bump_rev_calls \u003d [mock.call(mock.ANY, self.fake_ext_gw_port,"},{"line_number":446,"context_line":"                                    ovn_const.TYPE_ROUTER_PORTS),"},{"line_number":447,"context_line":"                          mock.call(mock.ANY,"},{"line_number":448,"context_line":"                                    self.fake_router_with_ext_gw,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_bc71bce1","line":445,"range":{"start_line":445,"start_character":36,"end_line":445,"end_character":44},"updated":"2020-02-10 15:24:43.000000000","message":"We can\u0027t get user context here, I believe. That\u0027s fine.","commit_id":"790f44e864b2d1120fa30aac19cd06bd5dddfa8e"}]}
