)]}'
{"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"663c59a0ff26b4088733e9f0403cbe9b179e8188","unresolved":false,"context_lines":[{"line_number":900,"context_line":"        return (\u0027qvb\u0027 + port[\u0027device\u0027])[:n_const.LINUX_DEV_LEN]"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def _get_device_name(self, port):"},{"line_number":903,"context_line":"        if not isinstance(port, dict):"},{"line_number":904,"context_line":"            device_name \u003d port"},{"line_number":905,"context_line":"        else:"},{"line_number":906,"context_line":"            device_name \u003d port[\u0027device\u0027]"},{"line_number":907,"context_line":"        return get_hybrid_port_name(device_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff6b8bd7_1452ac68","line":906,"range":{"start_line":903,"start_character":0,"end_line":906,"end_character":40},"updated":"2018-03-05 12:30:49.000000000","message":"nit:\n\n device_name \u003d super(OVSHybridIptablesFirewallDriver, self)._get_device_name(port)","commit_id":"ed950ab51d87f17cedc86942568a08a0e8bd19df"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8c9513fa50e3a54f6a23b45a8cf216268c62aad2","unresolved":false,"context_lines":[{"line_number":900,"context_line":"        return (\u0027qvb\u0027 + port[\u0027device\u0027])[:n_const.LINUX_DEV_LEN]"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def _get_device_name(self, port):"},{"line_number":903,"context_line":"        if not isinstance(port, dict):"},{"line_number":904,"context_line":"            device_name \u003d port"},{"line_number":905,"context_line":"        else:"},{"line_number":906,"context_line":"            device_name \u003d port[\u0027device\u0027]"},{"line_number":907,"context_line":"        return get_hybrid_port_name(device_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff6b8bd7_825e6ce4","line":906,"range":{"start_line":903,"start_character":0,"end_line":906,"end_character":40},"in_reply_to":"ff6b8bd7_1452ac68","updated":"2018-03-06 08:35:05.000000000","message":"right, changed. I don\u0027t know why I missed that :)","commit_id":"ed950ab51d87f17cedc86942568a08a0e8bd19df"}],"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"25cc788da8820a0d6396bfaf57a287a031ba2c30","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                else:"},{"line_number":145,"context_line":"                    LOG.debug(\"Prepare port filter for %s\", device[\u0027device\u0027])"},{"line_number":146,"context_line":"                    self.firewall.prepare_port_filter(device)"},{"line_number":147,"context_line":"            self.firewall.process_trusted_ports(trusted_devices)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _update_security_group_info(self, security_groups,"},{"line_number":150,"context_line":"                                    security_group_member_ips):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_4a7359b2","line":147,"updated":"2017-12-05 14:29:55.000000000","message":"So right here there is a call to process trusted ports, which the ovs agent firewall code implements.  Can we just implement that in the iptables_firewall code?","commit_id":"be3ac77e2f2aeb80da9a389980d54606ceca590a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ec1f9dcbdf95a9517b9e5ed562b9220e3634ab1c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        trusted_devices \u003d []"},{"line_number":159,"context_line":"        device_names \u003d ["},{"line_number":160,"context_line":"            dev[\u0027device\u0027] for dev in devices.values()]"},{"line_number":161,"context_line":"        for device_id in device_ids:"},{"line_number":162,"context_line":"            if uuidutils.is_uuid_like(device_id):"},{"line_number":163,"context_line":"                # Means that port_id was given as device_id"},{"line_number":164,"context_line":"                if device_id not in devices.keys():"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_a032ebf0","line":161,"updated":"2017-12-08 14:22:53.000000000","message":"Sorry, it must be because not much coffee yet, but why aren\u0027t these all device ids and some are device names?  I\u0027m confused.","commit_id":"842da346e08e924967f409d99cc3004e8a7de97b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7688dad9d5041ec256dcde00e7230aa194b5f126","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        trusted_devices \u003d []"},{"line_number":159,"context_line":"        device_names \u003d ["},{"line_number":160,"context_line":"            dev[\u0027device\u0027] for dev in devices.values()]"},{"line_number":161,"context_line":"        for device_id in device_ids:"},{"line_number":162,"context_line":"            if uuidutils.is_uuid_like(device_id):"},{"line_number":163,"context_line":"                # Means that port_id was given as device_id"},{"line_number":164,"context_line":"                if device_id not in devices.keys():"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_800b27d4","line":161,"in_reply_to":"df87a7cf_a032ebf0","updated":"2017-12-08 14:35:32.000000000","message":"In Linuxbridge agent as \"device_ids\" are passed devices like \"tapXXXX\" instead of port_id.\nPlease check that ml2 plugin also have method to handle such case: https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/plugin.py#L1837\nAnd now, without this check all devices passed as device_ids from linuxbridge agent would be treated as trusted devices because in \"devices\" dict port_ids as used as keys.","commit_id":"842da346e08e924967f409d99cc3004e8a7de97b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a01d908ba2552d53cef2f197f1cd55e33551280f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        device_names \u003d ["},{"line_number":160,"context_line":"            dev[\u0027device\u0027] for dev in devices.values()]"},{"line_number":161,"context_line":"        for device_id in device_ids:"},{"line_number":162,"context_line":"            if uuidutils.is_uuid_like(device_id):"},{"line_number":163,"context_line":"                # Means that port_id was given as device_id"},{"line_number":164,"context_line":"                if device_id not in devices.keys():"},{"line_number":165,"context_line":"                    trusted_devices.append(device_id)"},{"line_number":166,"context_line":"            else:"},{"line_number":167,"context_line":"                # Means that device name (like tapXXX) was given as"},{"line_number":168,"context_line":"                # device_id"},{"line_number":169,"context_line":"                if device_id not in device_names:"},{"line_number":170,"context_line":"                    trusted_devices.append(device_id)"},{"line_number":171,"context_line":"        return trusted_devices"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def security_groups_rule_updated(self, security_groups):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_81b3280a","line":170,"range":{"start_line":162,"start_character":0,"end_line":170,"end_character":53},"updated":"2017-12-08 17:02:24.000000000","message":"I will change it little bit soon as it is not perfect solution now :)","commit_id":"842da346e08e924967f409d99cc3004e8a7de97b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"663c59a0ff26b4088733e9f0403cbe9b179e8188","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        trusted_devices \u003d []"},{"line_number":64,"context_line":"        # Devices which are already added in firewall ports should"},{"line_number":65,"context_line":"        # not be treated as trusted devices but as regular ports"},{"line_number":66,"context_line":"        all_devices \u003d copy.deepcopy(devices)"},{"line_number":67,"context_line":"        all_devices.update(self.firewall.ports)"},{"line_number":68,"context_line":"        device_names \u003d ["},{"line_number":69,"context_line":"            dev[\u0027device\u0027] for dev in all_devices.values()]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff6b8bd7_34d010ca","line":66,"range":{"start_line":66,"start_character":27,"end_line":66,"end_character":35},"updated":"2018-03-05 12:30:49.000000000","message":"why do you need a deepcopy here? the device itself is not modified, is it? Shouldn\u0027t \n\n all_devices \u003d devices.copy()\n\nbe enough?","commit_id":"ed950ab51d87f17cedc86942568a08a0e8bd19df"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8c9513fa50e3a54f6a23b45a8cf216268c62aad2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        trusted_devices \u003d []"},{"line_number":64,"context_line":"        # Devices which are already added in firewall ports should"},{"line_number":65,"context_line":"        # not be treated as trusted devices but as regular ports"},{"line_number":66,"context_line":"        all_devices \u003d copy.deepcopy(devices)"},{"line_number":67,"context_line":"        all_devices.update(self.firewall.ports)"},{"line_number":68,"context_line":"        device_names \u003d ["},{"line_number":69,"context_line":"            dev[\u0027device\u0027] for dev in all_devices.values()]"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff6b8bd7_a204d0c7","line":66,"range":{"start_line":66,"start_character":27,"end_line":66,"end_character":35},"in_reply_to":"ff6b8bd7_34d010ca","updated":"2018-03-06 08:35:05.000000000","message":"right. Changed","commit_id":"ed950ab51d87f17cedc86942568a08a0e8bd19df"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4495067ea0201ea6a072fbd1f536f2194bc4775c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        trusted_devices \u003d []"},{"line_number":64,"context_line":"        # Devices which are already added in firewall ports should"},{"line_number":65,"context_line":"        # not be treated as trusted devices but as regular ports"},{"line_number":66,"context_line":"        all_devices \u003d copy.copy(devices)"},{"line_number":67,"context_line":"        all_devices.update(self.firewall.ports)"},{"line_number":68,"context_line":"        device_names \u003d ["},{"line_number":69,"context_line":"            dev[\u0027device\u0027] for dev in all_devices.values()]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff6b8bd7_3dd9c582","line":66,"range":{"start_line":66,"start_character":22,"end_line":66,"end_character":40},"updated":"2018-03-06 08:55:18.000000000","message":"with devices.copy() you won\u0027t need to import copy module at all","commit_id":"d29f68fd7821495e197573ac69ec36a4a2729dbf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"cdca25baa79507aef75ecbbd2e0b719a4e549b0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        trusted_devices \u003d []"},{"line_number":64,"context_line":"        # Devices which are already added in firewall ports should"},{"line_number":65,"context_line":"        # not be treated as trusted devices but as regular ports"},{"line_number":66,"context_line":"        all_devices \u003d copy.copy(devices)"},{"line_number":67,"context_line":"        all_devices.update(self.firewall.ports)"},{"line_number":68,"context_line":"        device_names \u003d ["},{"line_number":69,"context_line":"            dev[\u0027device\u0027] for dev in all_devices.values()]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff6b8bd7_dd1a0916","line":66,"range":{"start_line":66,"start_character":22,"end_line":66,"end_character":40},"in_reply_to":"ff6b8bd7_3dd9c582","updated":"2018-03-06 09:13:51.000000000","message":"right. I need some more coffee probably :)","commit_id":"d29f68fd7821495e197573ac69ec36a4a2729dbf"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c8b0e2dcefd5836f4e9f6be545bf1e4ecfc7e3d2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        trusted_devices \u003d []"},{"line_number":64,"context_line":"        # Devices which are already added in firewall ports should"},{"line_number":65,"context_line":"        # not be treated as trusted devices but as regular ports"},{"line_number":66,"context_line":"        all_devices \u003d copy.copy(devices)"},{"line_number":67,"context_line":"        all_devices.update(self.firewall.ports)"},{"line_number":68,"context_line":"        device_names \u003d ["},{"line_number":69,"context_line":"            dev[\u0027device\u0027] for dev in all_devices.values()]"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff6b8bd7_fd44adb9","line":66,"range":{"start_line":66,"start_character":22,"end_line":66,"end_character":40},"in_reply_to":"ff6b8bd7_dd1a0916","updated":"2018-03-06 09:16:25.000000000","message":"I\u0027m gonna get some too :)","commit_id":"d29f68fd7821495e197573ac69ec36a4a2729dbf"}]}
