)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e4c9aa5bcc7e5f78ef6d850c7b3186c99b3b832","unresolved":false,"context_lines":[{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1422,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id,"},{"line_number":1423,"context_line":"                                          \u0027tenant_id\u0027: fip[\u0027tenant_id\u0027]}})"},{"line_number":1424,"context_line":"        registry.notify(resources.FLOATING_IP,"},{"line_number":1425,"context_line":"                        events.AFTER_UPDATE,"},{"line_number":1426,"context_line":"                        self._update_fip_assoc,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_ad9d97bc","line":1423,"range":{"start_line":1423,"start_character":43,"end_line":1423,"end_character":52},"updated":"2019-07-03 13:06:08.000000000","message":"Because of [1], we should stop using tenant_id in favor of project_id\n\n[1] https://review.opendev.org/#/c/665516/5/neutron/plugins/ml2/plugin.py@1466","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e4c9aa5bcc7e5f78ef6d850c7b3186c99b3b832","unresolved":false,"context_lines":[{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1422,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id,"},{"line_number":1423,"context_line":"                                          \u0027tenant_id\u0027: fip[\u0027tenant_id\u0027]}})"},{"line_number":1424,"context_line":"        registry.notify(resources.FLOATING_IP,"},{"line_number":1425,"context_line":"                        events.AFTER_UPDATE,"},{"line_number":1426,"context_line":"                        self._update_fip_assoc,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_0216f2f2","line":1423,"updated":"2019-07-03 13:06:08.000000000","message":"nit: Indentation is a bit weird here.","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"73cb177007a3e677f539154096267880e69bdda1","unresolved":false,"context_lines":[{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        self._core_plugin.update_port(context.elevated(), external_port[\u0027id\u0027],"},{"line_number":1422,"context_line":"                                      {\u0027port\u0027: {\u0027device_id\u0027: fip_id,"},{"line_number":1423,"context_line":"                                          \u0027tenant_id\u0027: fip[\u0027tenant_id\u0027]}})"},{"line_number":1424,"context_line":"        registry.notify(resources.FLOATING_IP,"},{"line_number":1425,"context_line":"                        events.AFTER_UPDATE,"},{"line_number":1426,"context_line":"                        self._update_fip_assoc,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_3cd0fec9","line":1423,"range":{"start_line":1423,"start_character":43,"end_line":1423,"end_character":52},"in_reply_to":"9fb8cfa7_ad9d97bc","updated":"2019-07-04 09:45:09.000000000","message":"Done","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9981d4214a14ff333bb54125d89acb8e50e0fa96","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"                    self._enforce_device_owner_not_router_intf_or_device_id("},{"line_number":1469,"context_line":"                        context, pdata.get(\u0027device_owner\u0027),"},{"line_number":1470,"context_line":"                        pdata.get(\u0027device_id\u0027), project_id)"},{"line_number":1471,"context_line":"                bulk_port_data \u003d dict(project_id\u003dproject_id,"},{"line_number":1472,"context_line":"                    name\u003dpdata.get(\u0027name\u0027),"},{"line_number":1473,"context_line":"                    network_id\u003dpdata.get(\u0027network_id\u0027),"},{"line_number":1474,"context_line":"                    admin_state_up\u003dpdata.get(\u0027admin_state_up\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_bf62f93c","line":1471,"range":{"start_line":1471,"start_character":38,"end_line":1471,"end_character":59},"updated":"2019-06-27 08:37:28.000000000","message":"nitty nit: this could be moved to next line to have same indentation as other parameters","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"e0c5959b30442a0610fd338bc1c62dae96cf125a","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"                    self._enforce_device_owner_not_router_intf_or_device_id("},{"line_number":1469,"context_line":"                        context, pdata.get(\u0027device_owner\u0027),"},{"line_number":1470,"context_line":"                        pdata.get(\u0027device_id\u0027), project_id)"},{"line_number":1471,"context_line":"                bulk_port_data \u003d dict(project_id\u003dproject_id,"},{"line_number":1472,"context_line":"                    name\u003dpdata.get(\u0027name\u0027),"},{"line_number":1473,"context_line":"                    network_id\u003dpdata.get(\u0027network_id\u0027),"},{"line_number":1474,"context_line":"                    admin_state_up\u003dpdata.get(\u0027admin_state_up\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_5a740afe","line":1471,"range":{"start_line":1471,"start_character":38,"end_line":1471,"end_character":59},"in_reply_to":"9fb8cfa7_bf62f93c","updated":"2019-06-28 18:18:10.000000000","message":"Done","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9981d4214a14ff333bb54125d89acb8e50e0fa96","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                                            id\u003duuidutils.generate_uuid(),"},{"line_number":1506,"context_line":"                                            **bulk_port_data)"},{"line_number":1507,"context_line":"                db_port_obj.create()"},{"line_number":1508,"context_line":"                bulk_port_data[\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1509,"context_line":""},{"line_number":1510,"context_line":"                # Call IPAM to allocate IP addresses"},{"line_number":1511,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1fdea5d9","line":1508,"updated":"2019-06-27 08:37:28.000000000","message":"why You need to set it here as bulk_port_data isn\u0027t later used (or am I missing something) ?","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"e0c5959b30442a0610fd338bc1c62dae96cf125a","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                                            id\u003duuidutils.generate_uuid(),"},{"line_number":1506,"context_line":"                                            **bulk_port_data)"},{"line_number":1507,"context_line":"                db_port_obj.create()"},{"line_number":1508,"context_line":"                bulk_port_data[\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1509,"context_line":""},{"line_number":1510,"context_line":"                # Call IPAM to allocate IP addresses"},{"line_number":1511,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_fa5cde7d","line":1508,"in_reply_to":"9fb8cfa7_1fdea5d9","updated":"2019-06-28 18:18:10.000000000","message":"Hmm, probably a relic of my debugging.  Removed.","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e4c9aa5bcc7e5f78ef6d850c7b3186c99b3b832","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                port_dict \u003d self._make_port_dict(db_port_obj,"},{"line_number":1540,"context_line":"                                                 process_extensions\u003dFalse)"},{"line_number":1541,"context_line":"                port_dict[portbindings.HOST_ID] \u003d pdata.get("},{"line_number":1542,"context_line":"                        portbindings.HOST_ID)"},{"line_number":1543,"context_line":"                port_compat \u003d {\u0027port\u0027: port_dict}"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"                # Activities immediately post-port-creation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_e22b9e92","line":1542,"updated":"2019-07-03 13:06:08.000000000","message":"nit: this indentation is incorrect","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"73cb177007a3e677f539154096267880e69bdda1","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"                port_dict \u003d self._make_port_dict(db_port_obj,"},{"line_number":1540,"context_line":"                                                 process_extensions\u003dFalse)"},{"line_number":1541,"context_line":"                port_dict[portbindings.HOST_ID] \u003d pdata.get("},{"line_number":1542,"context_line":"                        portbindings.HOST_ID)"},{"line_number":1543,"context_line":"                port_compat \u003d {\u0027port\u0027: port_dict}"},{"line_number":1544,"context_line":""},{"line_number":1545,"context_line":"                # Activities immediately post-port-creation"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_b7be47fd","line":1542,"in_reply_to":"9fb8cfa7_e22b9e92","updated":"2019-07-04 09:45:09.000000000","message":"Done","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9e4c9aa5bcc7e5f78ef6d850c7b3186c99b3b832","unresolved":false,"context_lines":[{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"                # process port binding"},{"line_number":1557,"context_line":"                binding \u003d db.add_port_binding(context, port_dict[\u0027id\u0027])"},{"line_number":1558,"context_line":"                binding[\"host\"] \u003d pdata.get(\u0027name\u0027)"},{"line_number":1559,"context_line":"                mech_context \u003d driver_context.PortContext(self, context,"},{"line_number":1560,"context_line":"                                                          port_dict, network,"},{"line_number":1561,"context_line":"                                                          binding, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_6d0b1f24","line":1558,"range":{"start_line":1558,"start_character":33,"end_line":1558,"end_character":51},"updated":"2019-07-03 13:06:08.000000000","message":"\"pdata\" is the port data. \"name\" is the port name, not the host name.","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"73cb177007a3e677f539154096267880e69bdda1","unresolved":false,"context_lines":[{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"                # process port binding"},{"line_number":1557,"context_line":"                binding \u003d db.add_port_binding(context, port_dict[\u0027id\u0027])"},{"line_number":1558,"context_line":"                binding[\"host\"] \u003d pdata.get(\u0027name\u0027)"},{"line_number":1559,"context_line":"                mech_context \u003d driver_context.PortContext(self, context,"},{"line_number":1560,"context_line":"                                                          port_dict, network,"},{"line_number":1561,"context_line":"                                                          binding, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_d7bbc30b","line":1558,"range":{"start_line":1558,"start_character":33,"end_line":1558,"end_character":51},"in_reply_to":"9fb8cfa7_6d0b1f24","updated":"2019-07-04 09:45:09.000000000","message":"Good catch. I fixed it","commit_id":"020135478ef96d5be85ee5c0916d0d81206fdbf2"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"0e874a7b4b1f81f784657d656ce7bf0d485287db","unresolved":false,"context_lines":[{"line_number":1480,"context_line":"                        const.PORT_STATUS_ACTIVE),"},{"line_number":1481,"context_line":"                    device_id\u003dpdata.get(\u0027device_id\u0027),"},{"line_number":1482,"context_line":"                    device_owner\u003dpdata.get(\u0027device_owner\u0027),"},{"line_number":1483,"context_line":"                    security_groups\u003dpdata.get(\u0027security_groups\u0027),"},{"line_number":1484,"context_line":"                    description\u003dpdata.get(\u0027description\u0027))"},{"line_number":1485,"context_line":""},{"line_number":1486,"context_line":"                # Ensure that the networks exist."}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_0d1ff96c","line":1483,"range":{"start_line":1483,"start_character":20,"end_line":1483,"end_character":65},"updated":"2019-07-05 13:51:23.000000000","message":"Ports created with bulk port create were always getting the default security group specified because this should be \"security_group_ids\" in order to match with [1].\n\nhttps://opendev.org/openstack/neutron/src/branch/master/neutron/objects/ports.py#L307","commit_id":"777c45442f5e8c24193cda8192a5af57de1ddcc7"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9981d4214a14ff333bb54125d89acb8e50e0fa96","unresolved":false,"context_lines":[{"line_number":595,"context_line":"            # create a specific auth context for this request"},{"line_number":596,"context_line":"            req.environ[\u0027neutron.context\u0027] \u003d neutron_context"},{"line_number":597,"context_line":"        elif hasattr(self, \u0027tenant_id\u0027):"},{"line_number":598,"context_line":"            req.environ[\u0027neutron.context\u0027] \u003d context.Context(\u0027\u0027,"},{"line_number":599,"context_line":"                                                             self.tenant_id)"},{"line_number":600,"context_line":"        return req.get_response(self._api_for_resource(resource))"},{"line_number":601,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_3a13775e","line":598,"range":{"start_line":598,"start_character":61,"end_line":598,"end_character":63},"updated":"2019-06-27 08:37:28.000000000","message":"what is this empty string for?","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"},{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"e0c5959b30442a0610fd338bc1c62dae96cf125a","unresolved":false,"context_lines":[{"line_number":595,"context_line":"            # create a specific auth context for this request"},{"line_number":596,"context_line":"            req.environ[\u0027neutron.context\u0027] \u003d neutron_context"},{"line_number":597,"context_line":"        elif hasattr(self, \u0027tenant_id\u0027):"},{"line_number":598,"context_line":"            req.environ[\u0027neutron.context\u0027] \u003d context.Context(\u0027\u0027,"},{"line_number":599,"context_line":"                                                             self.tenant_id)"},{"line_number":600,"context_line":"        return req.get_response(self._api_for_resource(resource))"},{"line_number":601,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1a9772ee","line":598,"range":{"start_line":598,"start_character":61,"end_line":598,"end_character":63},"in_reply_to":"9fb8cfa7_3a13775e","updated":"2019-06-28 18:18:10.000000000","message":"The __init__ for the Context class has this signature:\n\n    def __init__(self, *args, **kwargs)\n\nTherefore it is an error to call it with only kwargs; an arg of some kind is needed, even if it is a throwaway.  FYI you see the same pattern in this file, for example at lines 922, 941, 1261, and 1265.","commit_id":"ec3d9dbd9a90c858cc7d8c649ddbbcb62c9a6501"}]}
