)]}'
{"dragonflow/controller/sg_app.py":[{"author":{"_account_id":22338,"name":"xuxiaojie","email":"xiaojie.xu@huawei.com","username":"xuxiaojie"},"change_message_id":"bdfb34b71462facf7f495cc3dd699c5aa2c1caf9","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @staticmethod"},{"line_number":94,"context_line":"    def _get_cidr_changes_after_removing_addresses(cidr_set, address_list):"},{"line_number":95,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":96,"context_line":"           address_list - IPAddress or string list"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        new_cidr_set \u003d cidr_set - netaddr.IPSet(address_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_d57a81f0","line":95,"range":{"start_line":95,"start_character":11,"end_line":95,"end_character":21},"updated":"2016-11-18 01:32:04.000000000","message":"cidr_set","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"ecd3610034dbea5b9105722e48d5b8ce756d094a","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @staticmethod"},{"line_number":94,"context_line":"    def _get_cidr_changes_after_removing_addresses(cidr_set, address_list):"},{"line_number":95,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":96,"context_line":"           address_list - IPAddress or string list"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        new_cidr_set \u003d cidr_set - netaddr.IPSet(address_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_55603101","line":95,"range":{"start_line":95,"start_character":11,"end_line":95,"end_character":21},"in_reply_to":"7a77a97e_d57a81f0","updated":"2016-11-18 01:38:57.000000000","message":"Done","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":22338,"name":"xuxiaojie","email":"xiaojie.xu@huawei.com","username":"xuxiaojie"},"change_message_id":"bdfb34b71462facf7f495cc3dd699c5aa2c1caf9","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def _get_cidr_changes_after_adding_addresses(cidr_set, address_list):"},{"line_number":105,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":106,"context_line":"           address_list - IPAddress or string list"},{"line_number":107,"context_line":"        \"\"\""},{"line_number":108,"context_line":"        new_cidr_set \u003d cidr_set | netaddr.IPSet(address_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_d561a13a","line":105,"range":{"start_line":105,"start_character":11,"end_line":105,"end_character":21},"updated":"2016-11-18 01:32:04.000000000","message":"ditto","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"ecd3610034dbea5b9105722e48d5b8ce756d094a","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def _get_cidr_changes_after_adding_addresses(cidr_set, address_list):"},{"line_number":105,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":106,"context_line":"           address_list - IPAddress or string list"},{"line_number":107,"context_line":"        \"\"\""},{"line_number":108,"context_line":"        new_cidr_set \u003d cidr_set | netaddr.IPSet(address_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_755d2d46","line":105,"range":{"start_line":105,"start_character":11,"end_line":105,"end_character":21},"in_reply_to":"7a77a97e_d561a13a","updated":"2016-11-18 01:38:57.000000000","message":"Done","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":22338,"name":"xuxiaojie","email":"xiaojie.xu@huawei.com","username":"xuxiaojie"},"change_message_id":"bdfb34b71462facf7f495cc3dd699c5aa2c1caf9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    @staticmethod"},{"line_number":114,"context_line":"    def _get_cidr_changes_after_updating_addresses(cidr_set, addresses_to_add,"},{"line_number":115,"context_line":"                                                   addresses_to_remove):"},{"line_number":116,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":117,"context_line":"           addresses_to_add - IPAddress or string list"},{"line_number":118,"context_line":"           addresses_to_remove - IPAddress or string list"},{"line_number":119,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_5556715c","line":116,"range":{"start_line":116,"start_character":11,"end_line":116,"end_character":21},"updated":"2016-11-18 01:32:04.000000000","message":"ditto","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"ecd3610034dbea5b9105722e48d5b8ce756d094a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    @staticmethod"},{"line_number":114,"context_line":"    def _get_cidr_changes_after_updating_addresses(cidr_set, addresses_to_add,"},{"line_number":115,"context_line":"                                                   addresses_to_remove):"},{"line_number":116,"context_line":"        \"\"\"cidr_array - IPSet"},{"line_number":117,"context_line":"           addresses_to_add - IPAddress or string list"},{"line_number":118,"context_line":"           addresses_to_remove - IPAddress or string list"},{"line_number":119,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_95564928","line":116,"range":{"start_line":116,"start_character":11,"end_line":116,"end_character":21},"in_reply_to":"7a77a97e_5556715c","updated":"2016-11-18 01:38:57.000000000","message":"Done","commit_id":"cd753fcce645960e8dc8abad5d6c5556c25e6644"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"bc292f4bf1772e5f13baeecba833c76c3e3b31f2","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"},{"line_number":220,"context_line":"            # IPv6 addresses are not supported yet"},{"line_number":221,"context_line":"            ips.append(fixed_ip)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        allowed_address_pairs \u003d lport.get_allow_address_pairs()"},{"line_number":224,"context_line":"        if allowed_address_pairs is not None:"},{"line_number":225,"context_line":"            for pair in allowed_address_pairs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_f67100aa","line":222,"updated":"2016-11-21 04:00:03.000000000","message":"would you log something about situation when not supported","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"8fd2645fe4f47ef990dbeb8773544291f02c0905","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"},{"line_number":220,"context_line":"            # IPv6 addresses are not supported yet"},{"line_number":221,"context_line":"            ips.append(fixed_ip)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        allowed_address_pairs \u003d lport.get_allow_address_pairs()"},{"line_number":224,"context_line":"        if allowed_address_pairs is not None:"},{"line_number":225,"context_line":"            for pair in allowed_address_pairs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_5c6bb585","line":222,"in_reply_to":"7a77a97e_f67100aa","updated":"2016-11-21 06:45:29.000000000","message":"Done","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"bc292f4bf1772e5f13baeecba833c76c3e3b31f2","unresolved":false,"context_lines":[{"line_number":936,"context_line":"                                                       original_secgroups):"},{"line_number":937,"context_line":"        added_secgroups \u003d []"},{"line_number":938,"context_line":"        if original_secgroups is not None:"},{"line_number":939,"context_line":"            removed_secgroups \u003d list(original_secgroups)"},{"line_number":940,"context_line":"        else:"},{"line_number":941,"context_line":"            removed_secgroups \u003d []"},{"line_number":942,"context_line":"        unchanged_secgroups \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_769b3073","line":939,"range":{"start_line":939,"start_character":37,"end_line":939,"end_character":55},"updated":"2016-11-21 04:00:03.000000000","message":"is already list, no need to transform again","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"8fd2645fe4f47ef990dbeb8773544291f02c0905","unresolved":false,"context_lines":[{"line_number":936,"context_line":"                                                       original_secgroups):"},{"line_number":937,"context_line":"        added_secgroups \u003d []"},{"line_number":938,"context_line":"        if original_secgroups is not None:"},{"line_number":939,"context_line":"            removed_secgroups \u003d list(original_secgroups)"},{"line_number":940,"context_line":"        else:"},{"line_number":941,"context_line":"            removed_secgroups \u003d []"},{"line_number":942,"context_line":"        unchanged_secgroups \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_f93e53d9","line":939,"range":{"start_line":939,"start_character":37,"end_line":939,"end_character":55},"in_reply_to":"7a77a97e_769b3073","updated":"2016-11-21 06:45:29.000000000","message":"I don\u0027t want to change the value of passed parameter, so I create a copy of it by using list(). By the way, this part is not changed in this patch.","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"bc292f4bf1772e5f13baeecba833c76c3e3b31f2","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            removed_secgroups \u003d list(original_secgroups)"},{"line_number":940,"context_line":"        else:"},{"line_number":941,"context_line":"            removed_secgroups \u003d []"},{"line_number":942,"context_line":"        unchanged_secgroups \u003d []"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"        if secgroups:"},{"line_number":945,"context_line":"            for item in secgroups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_56755430","line":942,"range":{"start_line":942,"start_character":7,"end_line":942,"end_character":32},"updated":"2016-11-21 04:00:03.000000000","message":"nit: move to the top","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"8fd2645fe4f47ef990dbeb8773544291f02c0905","unresolved":false,"context_lines":[{"line_number":939,"context_line":"            removed_secgroups \u003d list(original_secgroups)"},{"line_number":940,"context_line":"        else:"},{"line_number":941,"context_line":"            removed_secgroups \u003d []"},{"line_number":942,"context_line":"        unchanged_secgroups \u003d []"},{"line_number":943,"context_line":""},{"line_number":944,"context_line":"        if secgroups:"},{"line_number":945,"context_line":"            for item in secgroups:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_9cd1cd32","line":942,"range":{"start_line":942,"start_character":7,"end_line":942,"end_character":32},"in_reply_to":"7a77a97e_56755430","updated":"2016-11-21 06:45:29.000000000","message":"Done","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":22060,"name":"jingting","email":"kangjingting@huawei.com","username":"jingting"},"change_message_id":"bc292f4bf1772e5f13baeecba833c76c3e3b31f2","unresolved":false,"context_lines":[{"line_number":945,"context_line":"            for item in secgroups:"},{"line_number":946,"context_line":"                if item in removed_secgroups:"},{"line_number":947,"context_line":"                    removed_secgroups.remove(item)"},{"line_number":948,"context_line":"                    unchanged_secgroups.append(item)"},{"line_number":949,"context_line":"                else:"},{"line_number":950,"context_line":"                    added_secgroups.append(item)"},{"line_number":951,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_d697a438","line":948,"range":{"start_line":948,"start_character":20,"end_line":948,"end_character":52},"updated":"2016-11-21 04:00:03.000000000","message":"could you explain unchanged_secgroups means?","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"8fd2645fe4f47ef990dbeb8773544291f02c0905","unresolved":false,"context_lines":[{"line_number":945,"context_line":"            for item in secgroups:"},{"line_number":946,"context_line":"                if item in removed_secgroups:"},{"line_number":947,"context_line":"                    removed_secgroups.remove(item)"},{"line_number":948,"context_line":"                    unchanged_secgroups.append(item)"},{"line_number":949,"context_line":"                else:"},{"line_number":950,"context_line":"                    added_secgroups.append(item)"},{"line_number":951,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_992f1fa7","line":948,"range":{"start_line":948,"start_character":20,"end_line":948,"end_character":52},"in_reply_to":"7a77a97e_d697a438","updated":"2016-11-21 06:45:29.000000000","message":"Because the allowed address pairs configuration in a lport could be changed, so the secgroups which were associated to this lport both in now and before should also be proceeded in a port updated event.","commit_id":"6ab480623b309aa270b74bf4e1195641ee03307b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        rule_cookie \u003d rule_id \u003c\u003c const.SECURITY_GROUP_RULE_COOKIE_SHIFT_LEN"},{"line_number":190,"context_line":"        return rule_cookie \u0026 const.SECURITY_GROUP_RULE_COOKIE_MASK"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _add_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":193,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_2071d576","line":192,"updated":"2016-12-11 13:00:35.000000000","message":"I am not sure I understand what this method does (mostly, when should it return True or False). Please add docstring.","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        rule_cookie \u003d rule_id \u003c\u003c const.SECURITY_GROUP_RULE_COOKIE_SHIFT_LEN"},{"line_number":190,"context_line":"        return rule_cookie \u0026 const.SECURITY_GROUP_RULE_COOKIE_MASK"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _add_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":193,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_e02e39f9","line":192,"in_reply_to":"3a71b18c_2071d576","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def _add_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":193,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"},{"line_number":196,"context_line":"        if lport_id_list is None:"},{"line_number":197,"context_line":"            self.secgroup_ip_refs[key] \u003d [lport_id]"},{"line_number":198,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_201f1509","line":195,"range":{"start_line":195,"start_character":43,"end_line":195,"end_character":47},"updated":"2016-12-11 13:00:35.000000000","message":"nit: None is not needed.\nI am not sure when you need to return True, and when False, but barring that, you may be able to use defaultvalue.","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def _add_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":193,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"},{"line_number":196,"context_line":"        if lport_id_list is None:"},{"line_number":197,"context_line":"            self.secgroup_ip_refs[key] \u003d [lport_id]"},{"line_number":198,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_0036d551","line":195,"range":{"start_line":195,"start_character":43,"end_line":195,"end_character":47},"in_reply_to":"3a71b18c_201f1509","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"},{"line_number":196,"context_line":"        if lport_id_list is None:"},{"line_number":197,"context_line":"            self.secgroup_ip_refs[key] \u003d [lport_id]"},{"line_number":198,"context_line":"            return True"},{"line_number":199,"context_line":"        elif lport_id not in lport_id_list:"},{"line_number":200,"context_line":"            lport_id_list.append(lport_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_a0d96559","line":197,"range":{"start_line":197,"start_character":41,"end_line":197,"end_character":51},"updated":"2016-12-11 13:00:35.000000000","message":"I think a set is more appropriate.","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        lport_id_list \u003d \\"},{"line_number":195,"context_line":"            self.secgroup_ip_refs.get(key, None)"},{"line_number":196,"context_line":"        if lport_id_list is None:"},{"line_number":197,"context_line":"            self.secgroup_ip_refs[key] \u003d [lport_id]"},{"line_number":198,"context_line":"            return True"},{"line_number":199,"context_line":"        elif lport_id not in lport_id_list:"},{"line_number":200,"context_line":"            lport_id_list.append(lport_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_20391142","line":197,"range":{"start_line":197,"start_character":41,"end_line":197,"end_character":51},"in_reply_to":"3a71b18c_a0d96559","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        return False"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _remove_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":205,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":206,"context_line":"        lport_id_list \u003d \\"},{"line_number":207,"context_line":"            self.secgroup_ip_refs.get(key)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_60674db7","line":204,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        return False"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _remove_and_check_ip(self, secgroup_id, ip, lport_id):"},{"line_number":205,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":206,"context_line":"        lport_id_list \u003d \\"},{"line_number":207,"context_line":"            self.secgroup_ip_refs.get(key)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_3bcb0055","line":204,"in_reply_to":"3a71b18c_60674db7","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        return False"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_ips_in_logical_port(self, lport):"},{"line_number":217,"context_line":"        ips \u003d []"},{"line_number":218,"context_line":"        fixed_ip \u003d lport.get_ip()"},{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_800629cc","line":216,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        return False"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_ips_in_logical_port(self, lport):"},{"line_number":217,"context_line":"        ips \u003d []"},{"line_number":218,"context_line":"        fixed_ip \u003d lport.get_ip()"},{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_525ea312","line":216,"in_reply_to":"3a71b18c_800629cc","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        ips \u003d []"},{"line_number":218,"context_line":"        fixed_ip \u003d lport.get_ip()"},{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"},{"line_number":220,"context_line":"            # IPv6 addresses are not supported yet"},{"line_number":221,"context_line":"            ips.append(fixed_ip)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        allowed_address_pairs \u003d lport.get_allow_address_pairs()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_40efb1e8","line":220,"updated":"2016-12-11 13:00:35.000000000","message":"Please add the warning below here too.","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        ips \u003d []"},{"line_number":218,"context_line":"        fixed_ip \u003d lport.get_ip()"},{"line_number":219,"context_line":"        if netaddr.IPNetwork(fixed_ip).version \u003d\u003d 4:"},{"line_number":220,"context_line":"            # IPv6 addresses are not supported yet"},{"line_number":221,"context_line":"            ips.append(fixed_ip)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        allowed_address_pairs \u003d lport.get_allow_address_pairs()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_808efc2b","line":220,"in_reply_to":"3a71b18c_40efb1e8","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if allowed_address_pairs is not None:"},{"line_number":225,"context_line":"            for pair in allowed_address_pairs:"},{"line_number":226,"context_line":"                ip \u003d pair[\"ip_address\"]"},{"line_number":227,"context_line":"                if ip not in ips:"},{"line_number":228,"context_line":"                    if netaddr.IPNetwork(ip).version \u003d\u003d 4:"},{"line_number":229,"context_line":"                        ips.append(ip)"},{"line_number":230,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_20e63515","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":33},"updated":"2016-12-11 13:00:35.000000000","message":"if ips would be a set, this check can be removed","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if allowed_address_pairs is not None:"},{"line_number":225,"context_line":"            for pair in allowed_address_pairs:"},{"line_number":226,"context_line":"                ip \u003d pair[\"ip_address\"]"},{"line_number":227,"context_line":"                if ip not in ips:"},{"line_number":228,"context_line":"                    if netaddr.IPNetwork(ip).version \u003d\u003d 4:"},{"line_number":229,"context_line":"                        ips.append(ip)"},{"line_number":230,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_20c4483e","line":227,"range":{"start_line":227,"start_character":0,"end_line":227,"end_character":33},"in_reply_to":"3a71b18c_20e63515","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    if netaddr.IPNetwork(ip).version \u003d\u003d 4:"},{"line_number":229,"context_line":"                        ips.append(ip)"},{"line_number":230,"context_line":"                    else:"},{"line_number":231,"context_line":"                        LOG.log(_LW(\"No support for non IPv4 protocol, \""},{"line_number":232,"context_line":"                                    \"the address %(ip)s in allowed address \""},{"line_number":233,"context_line":"                                    \"pairs of lport %(lport)s was ignored.\"),"},{"line_number":234,"context_line":"                                {\u0027ip\u0027: ip, \u0027lport\u0027: lport.get_id()})"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_60ecadf3","line":231,"range":{"start_line":231,"start_character":28,"end_line":231,"end_character":31},"updated":"2016-12-11 13:00:35.000000000","message":"Is this a warning? Info?","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    if netaddr.IPNetwork(ip).version \u003d\u003d 4:"},{"line_number":229,"context_line":"                        ips.append(ip)"},{"line_number":230,"context_line":"                    else:"},{"line_number":231,"context_line":"                        LOG.log(_LW(\"No support for non IPv4 protocol, \""},{"line_number":232,"context_line":"                                    \"the address %(ip)s in allowed address \""},{"line_number":233,"context_line":"                                    \"pairs of lport %(lport)s was ignored.\"),"},{"line_number":234,"context_line":"                                {\u0027ip\u0027: ip, \u0027lport\u0027: lport.get_id()})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_608ba01f","line":231,"range":{"start_line":231,"start_character":28,"end_line":231,"end_character":31},"in_reply_to":"3a71b18c_60ecadf3","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        return ips"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _get_lport_added_ips_for_secgroup(self, secgroup_id, lport):"},{"line_number":239,"context_line":"        added_ips \u003d []"},{"line_number":240,"context_line":"        ips \u003d self._get_ips_in_logical_port(lport)"},{"line_number":241,"context_line":"        for ip in ips:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_a00b25d5","line":238,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        return ips"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def _get_lport_added_ips_for_secgroup(self, secgroup_id, lport):"},{"line_number":239,"context_line":"        added_ips \u003d []"},{"line_number":240,"context_line":"        ips \u003d self._get_ips_in_logical_port(lport)"},{"line_number":241,"context_line":"        for ip in ips:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_92a2fbfb","line":238,"in_reply_to":"3a71b18c_a00b25d5","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return added_ips"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_lport_removed_ips_for_secgroup(self, secgroup_id, lport):"},{"line_number":248,"context_line":"        removed_ips \u003d []"},{"line_number":249,"context_line":"        ips \u003d self._get_ips_in_logical_port(lport)"},{"line_number":250,"context_line":"        for ip in ips:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_c00ca1ee","line":247,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        return added_ips"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _get_lport_removed_ips_for_secgroup(self, secgroup_id, lport):"},{"line_number":248,"context_line":"        removed_ips \u003d []"},{"line_number":249,"context_line":"        ips \u003d self._get_ips_in_logical_port(lport)"},{"line_number":250,"context_line":"        for ip in ips:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_d2a8f3dd","line":247,"in_reply_to":"3a71b18c_c00ca1ee","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        return removed_ips"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def _get_lport_updated_ips_for_secgroup(self, secgroup_id, lport,"},{"line_number":257,"context_line":"                                            original_lport):"},{"line_number":258,"context_line":"        added_ips \u003d []"},{"line_number":259,"context_line":"        removed_ips \u003d []"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_e0119d05","line":257,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        return removed_ips"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def _get_lport_updated_ips_for_secgroup(self, secgroup_id, lport,"},{"line_number":257,"context_line":"                                            original_lport):"},{"line_number":258,"context_line":"        added_ips \u003d []"},{"line_number":259,"context_line":"        removed_ips \u003d []"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_12afcbe2","line":257,"in_reply_to":"3a71b18c_e0119d05","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        self._disassociate_secgroup_lport_addresses(secgroup_id, lport)"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"    def _update_port_addresses_process(self, lport, original_lport,"},{"line_number":904,"context_line":"                                       secgroup_id):"},{"line_number":905,"context_line":"        # update the record of aggregate addresses of ports associated"},{"line_number":906,"context_line":"        # with this security group."},{"line_number":907,"context_line":"        aggregate_addresses_range \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_e0ad1d9c","line":904,"updated":"2016-12-11 13:00:35.000000000","message":"Same here re: docstring","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        self._disassociate_secgroup_lport_addresses(secgroup_id, lport)"},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"    def _update_port_addresses_process(self, lport, original_lport,"},{"line_number":904,"context_line":"                                       secgroup_id):"},{"line_number":905,"context_line":"        # update the record of aggregate addresses of ports associated"},{"line_number":906,"context_line":"        # with this security group."},{"line_number":907,"context_line":"        aggregate_addresses_range \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_7e2fb83e","line":904,"in_reply_to":"3a71b18c_e0ad1d9c","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"113e5e72529e80f6c00f0c3873b3b2ffc14591a6","unresolved":false,"context_lines":[{"line_number":919,"context_line":"                removed_ips"},{"line_number":920,"context_line":"            )"},{"line_number":921,"context_line":"        if len(new_cidr_array) \u003d\u003d 0:"},{"line_number":922,"context_line":"            if secgroup_id in self.secgroup_aggregate_addresses:"},{"line_number":923,"context_line":"                del self.secgroup_aggregate_addresses[secgroup_id]"},{"line_number":924,"context_line":"        else:"},{"line_number":925,"context_line":"            self.secgroup_aggregate_addresses[secgroup_id] \u003d new_cidr_array"},{"line_number":926,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a71b18c_a0a7a5bb","line":923,"range":{"start_line":922,"start_character":0,"end_line":923,"end_character":66},"updated":"2016-12-11 13:00:35.000000000","message":"self.secgroup_aggregate_addresses.pop(secgroup_id, None) would make this a one-liner.","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"49de3c5d0e4f152d376b90d266cf04d6ac737b61","unresolved":false,"context_lines":[{"line_number":919,"context_line":"                removed_ips"},{"line_number":920,"context_line":"            )"},{"line_number":921,"context_line":"        if len(new_cidr_array) \u003d\u003d 0:"},{"line_number":922,"context_line":"            if secgroup_id in self.secgroup_aggregate_addresses:"},{"line_number":923,"context_line":"                del self.secgroup_aggregate_addresses[secgroup_id]"},{"line_number":924,"context_line":"        else:"},{"line_number":925,"context_line":"            self.secgroup_aggregate_addresses[secgroup_id] \u003d new_cidr_array"},{"line_number":926,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a6eadb0_fe3d88c4","line":923,"range":{"start_line":922,"start_character":0,"end_line":923,"end_character":66},"in_reply_to":"3a71b18c_a0a7a5bb","updated":"2016-12-16 09:27:54.000000000","message":"Done","commit_id":"9f2a66ee48ddd4bc0215ffe1c55e720f1e053834"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b56ee97479e6db59dc24852242d798affc20ad62","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        is_first \u003d False"},{"line_number":199,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":200,"context_line":"        if not self.secgroup_ip_refs.get(key):"},{"line_number":201,"context_line":"            # It is the first lport with this IP address associated with the"},{"line_number":202,"context_line":"            # security group"},{"line_number":203,"context_line":"            is_first \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_0ec64c16","line":200,"range":{"start_line":200,"start_character":20,"end_line":200,"end_character":46},"updated":"2016-12-19 08:54:19.000000000","message":"nit: You\u0027re looking up key in secgroup_ip_refs twice. you can do:\n\nref \u003d self.secgroup_ip_refs[key]\nif not ref:\n    is_first \u003d True\nref.add(lport_id)\nreturn is_first","commit_id":"da9cfae2c6df85f4c39f53d7c8893d2f1b88acf9"},{"author":{"_account_id":21007,"name":"yuan wei","email":"wei.yuan@huawei.com","username":"yuanwei"},"change_message_id":"5346f06f925d90e437e833849bffc7aa451990b1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        is_first \u003d False"},{"line_number":199,"context_line":"        key \u003d (secgroup_id, ip)"},{"line_number":200,"context_line":"        if not self.secgroup_ip_refs.get(key):"},{"line_number":201,"context_line":"            # It is the first lport with this IP address associated with the"},{"line_number":202,"context_line":"            # security group"},{"line_number":203,"context_line":"            is_first \u003d True"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_c4a99526","line":200,"range":{"start_line":200,"start_character":20,"end_line":200,"end_character":46},"in_reply_to":"1a6eadb0_0ec64c16","updated":"2016-12-19 09:33:43.000000000","message":"Done","commit_id":"da9cfae2c6df85f4c39f53d7c8893d2f1b88acf9"}]}
