)]}'
{"neutron/agent/l3/dvr.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        ip \u003d arp_table[\u0027ip_address\u0027]"},{"line_number":54,"context_line":"        mac \u003d arp_table[\u0027mac_address\u0027]"},{"line_number":55,"context_line":"        subnet_id \u003d arp_table[\u0027subnet_id\u0027]"},{"line_number":56,"context_line":"        operation \u003d arp_table.get(\u0027operation\u0027)"},{"line_number":57,"context_line":"        if operation \u003d\u003d \u0027add_temp\u0027:"},{"line_number":58,"context_line":"            ri._update_arp_entry(ip, mac, subnet_id, operation)"},{"line_number":59,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_3969708a","line":56,"updated":"2018-03-12 22:53:23.000000000","message":"state\u003darp_table.get(\u0027state\u0027) and then it can just be passed along instead of special-casing this.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"}],"neutron/agent/l3/dvr_local_router.py":[{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"1d50f638768b4c63f2680b01493ccc9d52e27874","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                    device.neigh.add(ip, mac, temp_state\u003d\u0027true\u0027)"},{"line_number":260,"context_line":"                return True"},{"line_number":261,"context_line":"            else:"},{"line_number":262,"context_line":"                if operation \u003d\u003d \u0027add\u0027 or operation \u003d\u003d \u0027add_temp\u0027:"},{"line_number":263,"context_line":"                    LOG.warning(\"Device %s does not exist so ARP entry \""},{"line_number":264,"context_line":"                                \"cannot be updated, will cache \""},{"line_number":265,"context_line":"                                \"information to be applied later \""}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_14226501","line":262,"range":{"start_line":262,"start_character":53,"end_line":262,"end_character":54},"updated":"2018-03-09 19:02:24.000000000","message":"Coul use \nif operation in [\u0027add\u0027, \u0027add_temp\u0027]:","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"1d50f638768b4c63f2680b01493ccc9d52e27874","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        for p in subnet_ports:"},{"line_number":284,"context_line":"            state \u003d True"},{"line_number":285,"context_line":"            if not p[\u0027device_owner\u0027]:"},{"line_number":286,"context_line":"                state \u003d False"},{"line_number":287,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":288,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":289,"context_line":"                    if state:"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_94eaf572","line":286,"range":{"start_line":286,"start_character":24,"end_line":286,"end_character":29},"updated":"2018-03-09 19:02:24.000000000","message":"This can be done in a single line:\nstate \u003d True if p[\u0027device_owner\u0027] else False\n\n\nHowever in either case, this will fail with a KerError, \nif p[\u0027device_owner\u0027] is not defined.","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"3d160d5eb304626cf886181da55bdd52212fbb9e","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        for p in subnet_ports:"},{"line_number":284,"context_line":"            state \u003d True"},{"line_number":285,"context_line":"            if not p[\u0027device_owner\u0027]:"},{"line_number":286,"context_line":"                state \u003d False"},{"line_number":287,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":288,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":289,"context_line":"                    if state:"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_2f9ab06d","line":286,"range":{"start_line":286,"start_character":24,"end_line":286,"end_character":29},"in_reply_to":"df7087c5_94eaf572","updated":"2018-03-09 19:52:47.000000000","message":"The port-dict will always have the \u0027device_owner\u0027 key.\nSo got think KeyError is possible.","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"1d50f638768b4c63f2680b01493ccc9d52e27874","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                state \u003d False"},{"line_number":287,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":288,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":289,"context_line":"                    if state:"},{"line_number":290,"context_line":"                        self._update_arp_entry(fixed_ip[\u0027ip_address\u0027],"},{"line_number":291,"context_line":"                                               p[\u0027mac_address\u0027],"},{"line_number":292,"context_line":"                                               subnet_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_74ade12f","line":289,"range":{"start_line":289,"start_character":23,"end_line":289,"end_character":28},"updated":"2018-03-09 19:02:24.000000000","message":"Why use \"state\" instead of just using p[\u0027device_owner\u0027]\nlike \nif p[\u0027device_owner\u0027]:\n    do something something... \n\nif you use this method you can delete l284 to 286","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"3d160d5eb304626cf886181da55bdd52212fbb9e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                state \u003d False"},{"line_number":287,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":288,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":289,"context_line":"                    if state:"},{"line_number":290,"context_line":"                        self._update_arp_entry(fixed_ip[\u0027ip_address\u0027],"},{"line_number":291,"context_line":"                                               p[\u0027mac_address\u0027],"},{"line_number":292,"context_line":"                                               subnet_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_8feadc72","line":289,"range":{"start_line":289,"start_character":23,"end_line":289,"end_character":28},"in_reply_to":"df7087c5_74ade12f","updated":"2018-03-09 19:52:47.000000000","message":"Yes the state is still required, because otherwise if not p[device_owner] we will not get to the second \u0027for\u0027 loop.","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"1d50f638768b4c63f2680b01493ccc9d52e27874","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                                               p[\u0027mac_address\u0027],"},{"line_number":297,"context_line":"                                               subnet_id,"},{"line_number":298,"context_line":"                                               \u0027add_temp\u0027)"},{"line_number":299,"context_line":"        self._process_arp_cache_for_internal_port(subnet_id)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    @staticmethod"},{"line_number":302,"context_line":"    def _get_snat_idx(ip_cidr):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_745ba153","line":299,"range":{"start_line":299,"start_character":13,"end_line":299,"end_character":49},"updated":"2018-03-09 19:02:24.000000000","message":"you could do all of this with just two lines (just like you did in this patch on file ip_lib.py line 126): \nin line 285 do: \noperation \u003d \u0027add\u0027 if p[\u0027device_owner\u0027] else \u0027add_temp\u0027\n\nThen do (on original line 284):\n self._update_arp_entry(fixed_ip[\u0027ip_address\u0027],\n                        subnet_id,\n                        operation)","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                arp_delete.add(arp_entry)"},{"line_number":240,"context_line":"        self._pending_arp_set -\u003d arp_delete"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _update_arp_entry(self, ip, mac, subnet_id, operation):"},{"line_number":243,"context_line":"        \"\"\"Add or delete arp entry into router namespace for the subnet.\"\"\""},{"line_number":244,"context_line":"        port \u003d self._get_internal_port(subnet_id)"},{"line_number":245,"context_line":"        # update arp entry only if the subnet is attached to the router"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_59746468","line":242,"updated":"2018-03-12 22:53:23.000000000","message":"add arg state, or state\u003d\u0027permanent\u0027","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"b60cae6539be831c144380dd9d4eab37aec3e460","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                arp_delete.add(arp_entry)"},{"line_number":240,"context_line":"        self._pending_arp_set -\u003d arp_delete"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def _update_arp_entry(self, ip, mac, subnet_id, operation):"},{"line_number":243,"context_line":"        \"\"\"Add or delete arp entry into router namespace for the subnet.\"\"\""},{"line_number":244,"context_line":"        port \u003d self._get_internal_port(subnet_id)"},{"line_number":245,"context_line":"        # update arp entry only if the subnet is attached to the router"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_e92005af","line":242,"in_reply_to":"df7087c5_59746468","updated":"2018-03-13 17:38:51.000000000","message":"Yes will address it.\nProbably instead of \u0027state\u0027 I will use \u0027nud_state\u0027","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            device \u003d ip_lib.IPDevice(interface_name, namespace\u003dself.ns_name)"},{"line_number":253,"context_line":"            if device.exists():"},{"line_number":254,"context_line":"                if operation \u003d\u003d \u0027add\u0027:"},{"line_number":255,"context_line":"                    device.neigh.add(ip, mac)"},{"line_number":256,"context_line":"                elif operation \u003d\u003d \u0027delete\u0027:"},{"line_number":257,"context_line":"                    device.neigh.delete(ip, mac)"},{"line_number":258,"context_line":"                elif operation \u003d\u003d \u0027add_temp\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_b944a01c","line":255,"updated":"2018-03-12 22:53:23.000000000","message":"If the operation was still \u0027add\u0027 can just pass state\u003dstate here, reducing the extra special case below.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"b60cae6539be831c144380dd9d4eab37aec3e460","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            device \u003d ip_lib.IPDevice(interface_name, namespace\u003dself.ns_name)"},{"line_number":253,"context_line":"            if device.exists():"},{"line_number":254,"context_line":"                if operation \u003d\u003d \u0027add\u0027:"},{"line_number":255,"context_line":"                    device.neigh.add(ip, mac)"},{"line_number":256,"context_line":"                elif operation \u003d\u003d \u0027delete\u0027:"},{"line_number":257,"context_line":"                    device.neigh.delete(ip, mac)"},{"line_number":258,"context_line":"                elif operation \u003d\u003d \u0027add_temp\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_89114960","line":255,"in_reply_to":"df7087c5_b944a01c","updated":"2018-03-13 17:38:51.000000000","message":"Will address it.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            tuple(common_utils.get_dvr_allowed_address_pair_device_owners()))"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        for p in subnet_ports:"},{"line_number":284,"context_line":"            operation \u003d \u0027add\u0027 if p.get(\u0027device_owner\u0027) else \u0027add_temp\u0027"},{"line_number":285,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":286,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":287,"context_line":"                    self._update_arp_entry(fixed_ip[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_d93714b0","line":284,"updated":"2018-03-12 22:53:23.000000000","message":"set another value \u0027state\u0027 here and pass it along in addition to the operation.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"b60cae6539be831c144380dd9d4eab37aec3e460","unresolved":false,"context_lines":[{"line_number":281,"context_line":"            tuple(common_utils.get_dvr_allowed_address_pair_device_owners()))"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        for p in subnet_ports:"},{"line_number":284,"context_line":"            operation \u003d \u0027add\u0027 if p.get(\u0027device_owner\u0027) else \u0027add_temp\u0027"},{"line_number":285,"context_line":"            if p[\u0027device_owner\u0027] not in ignored_device_owners:"},{"line_number":286,"context_line":"                for fixed_ip in p[\u0027fixed_ips\u0027]:"},{"line_number":287,"context_line":"                    self._update_arp_entry(fixed_ip[\u0027ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_a9168d54","line":284,"in_reply_to":"df7087c5_d93714b0","updated":"2018-03-13 17:38:51.000000000","message":"Will address it.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"56fa0c5a22a41ee3b46786543acfc0a0ebb92800","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                return True"},{"line_number":260,"context_line":"            else:"},{"line_number":261,"context_line":"                if (operation \u003d\u003d \u0027add\u0027 and"},{"line_number":262,"context_line":"                    (nud_state in [\u0027permanent\u0027, \u0027reachable\u0027])):"},{"line_number":263,"context_line":"                    LOG.warning(\"Device %s does not exist so ARP entry \""},{"line_number":264,"context_line":"                                \"cannot be updated, will cache \""},{"line_number":265,"context_line":"                                \"information to be applied later \""}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_aee3cf33","line":262,"updated":"2018-03-13 22:17:26.000000000","message":"I don\u0027t think you need this check for nud_state, can\u0027t imagine someone adding without one of these states, right?","commit_id":"5a2ff8beeffd76c8328fde24b029ccb6e77c5ce0"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":905,"context_line":"        arp_table \u003d {\u0027ip_address\u0027: ip_address,"},{"line_number":906,"context_line":"                     \u0027mac_address\u0027: mac_address,"},{"line_number":907,"context_line":"                     \u0027subnet_id\u0027: subnet,"},{"line_number":908,"context_line":"                     \u0027operation\u0027: operation}"},{"line_number":909,"context_line":"        notifier(context, router_id, arp_table)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"    def _get_subnet_id_for_given_fixed_ip("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_f9d53844","line":908,"updated":"2018-03-12 22:53:23.000000000","message":"I would just add \u0027state\u0027 and set it to what you want, \u0027reachable\u0027, that way the operation is still \u0027add\u0027.","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"}],"neutron/privileged/agent/linux/ip_lib.py":[{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"1d50f638768b4c63f2680b01493ccc9d52e27874","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    if kwargs.get(\u0027temp_state\u0027):"},{"line_number":117,"context_line":"        state \u003d \u0027reachable\u0027"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        state \u003d \u0027permanent\u0027"},{"line_number":120,"context_line":"    _run_iproute(\u0027replace\u0027,"},{"line_number":121,"context_line":"                 device,"},{"line_number":122,"context_line":"                 namespace,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_4f3cc4c7","line":119,"range":{"start_line":119,"start_character":26,"end_line":119,"end_character":27},"updated":"2018-03-09 19:02:24.000000000","message":"single line\nstate \u003d \u0027reachable\u0027 if kwargs.get(\u0027temp_state\u0027) else \u0027permanent\u0027","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"3d160d5eb304626cf886181da55bdd52212fbb9e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    if kwargs.get(\u0027temp_state\u0027):"},{"line_number":117,"context_line":"        state \u003d \u0027reachable\u0027"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        state \u003d \u0027permanent\u0027"},{"line_number":120,"context_line":"    _run_iproute(\u0027replace\u0027,"},{"line_number":121,"context_line":"                 device,"},{"line_number":122,"context_line":"                 namespace,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_0f81ec8f","line":119,"range":{"start_line":119,"start_character":26,"end_line":119,"end_character":27},"in_reply_to":"df7087c5_4f3cc4c7","updated":"2018-03-09 19:52:47.000000000","message":"will fix it.","commit_id":"b8026bd134028a95c4c2e00ed312177e3efa3978"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"10340a43c749031f794d1f32caaccf0d9bc27d83","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    :param namespace: The name of the namespace in which to add the entry"},{"line_number":177,"context_line":"    \"\"\""},{"line_number":178,"context_line":"    family \u003d _IP_VERSION_FAMILY_MAP[ip_version]"},{"line_number":179,"context_line":"    state \u003d \u0027reachable\u0027 if kwargs.get(\u0027temp_state\u0027) else \u0027permanent\u0027"},{"line_number":180,"context_line":"    _run_iproute_neigh(\u0027replace\u0027,"},{"line_number":181,"context_line":"                       device,"},{"line_number":182,"context_line":"                       namespace,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_39e2d030","line":179,"updated":"2018-03-12 22:53:23.000000000","message":"state \u003d kwargs.get(\u0027state\u0027) or \u0027permanent\u0027","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"a6713bd2b2e4d66699ac326f792a63c146d39330","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    :param namespace: The name of the namespace in which to add the entry"},{"line_number":177,"context_line":"    \"\"\""},{"line_number":178,"context_line":"    family \u003d _IP_VERSION_FAMILY_MAP[ip_version]"},{"line_number":179,"context_line":"    state \u003d \u0027reachable\u0027 if kwargs.get(\u0027temp_state\u0027) else \u0027permanent\u0027"},{"line_number":180,"context_line":"    _run_iproute_neigh(\u0027replace\u0027,"},{"line_number":181,"context_line":"                       device,"},{"line_number":182,"context_line":"                       namespace,"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_a9020d6e","line":179,"in_reply_to":"df7087c5_39e2d030","updated":"2018-03-12 23:53:00.000000000","message":"If I pass in \u0027state\u0027 as the kwargs \u0027key\u0027, then it gives a duplicate value to \u0027state\u0027.\nSince the kwargs is passed again to the _run_iproute_neigh","commit_id":"aabac26ee454001eb28f1f3d27105b0dbc1dc6c1"}]}
