)]}'
{"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"6dac375cb6d85e71e26a997888860a62233ae113","unresolved":true,"context_lines":[{"line_number":256,"context_line":"    def address_group_deleted(self, address_group_id):"},{"line_number":257,"context_line":"        LOG.info(\"Address group deleted %r\", address_group_id)"},{"line_number":258,"context_line":"        security_group_ids \u003d ("},{"line_number":259,"context_line":"            self.plugin_rpc.get_secgroup_ids_for_address_group("},{"line_number":260,"context_line":"                address_group_id))"},{"line_number":261,"context_line":"        self.security_groups_rule_updated(security_group_ids)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b645e285_8964e555","line":259,"updated":"2020-11-23 19:35:00.000000000","message":"One note that I planned to disallow address group delete when it is still associated with any security group rules: https://review.opendev.org/c/openstack/neutron/+/751110/13/neutron/db/address_group_db.py#174 The filtering here may not be necessary but still good to have.","commit_id":"c54be7a911eb5443b247d32c62907b2af10d3789"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"52fab4c7f2c3dffc846873d92a2b4407380fa509","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def address_group_deleted(self, address_group_id):"},{"line_number":257,"context_line":"        LOG.info(\"Address group deleted %r\", address_group_id)"},{"line_number":258,"context_line":"        security_group_ids \u003d ("},{"line_number":259,"context_line":"            self.plugin_rpc.get_secgroup_ids_for_address_group("},{"line_number":260,"context_line":"                address_group_id))"},{"line_number":261,"context_line":"        self.security_groups_rule_updated(security_group_ids)"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6a2d51a8_836a8ba9","line":259,"in_reply_to":"b645e285_8964e555","updated":"2020-11-23 21:55:57.000000000","message":"Ack","commit_id":"c54be7a911eb5443b247d32c62907b2af10d3789"}],"neutron/api/rpc/handlers/securitygroups_rpc.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"68febc08779be41bad01fc87b13b674e86918c73","unresolved":true,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def get_secgroup_ids_for_address_group(self, address_group_id):"},{"line_number":250,"context_line":"        filters \u003d {\u0027remote_address_group_id\u0027: (address_group_id, )}"},{"line_number":251,"context_line":"        return [rule.security_group_id for rule in"},{"line_number":252,"context_line":"                self.rcache.get_resources(\u0027SecurityGroupRule\u0027, filters)]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def _add_child_sg_rules(self, rtype, event, trigger, context, updated,"},{"line_number":255,"context_line":"                            **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"acc7446d_06802a4d","line":252,"range":{"start_line":251,"start_character":15,"end_line":252,"end_character":72},"updated":"2020-11-25 06:22:52.000000000","message":"Can there be duplicate security_group IDs?","commit_id":"5748676aee612054775196ba0e336334730bad04"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"da3d84a92db7191906ae893b550783af8d766bd7","unresolved":true,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def get_secgroup_ids_for_address_group(self, address_group_id):"},{"line_number":250,"context_line":"        filters \u003d {\u0027remote_address_group_id\u0027: (address_group_id, )}"},{"line_number":251,"context_line":"        return [rule.security_group_id for rule in"},{"line_number":252,"context_line":"                self.rcache.get_resources(\u0027SecurityGroupRule\u0027, filters)]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def _add_child_sg_rules(self, rtype, event, trigger, context, updated,"},{"line_number":255,"context_line":"                            **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"80ba7b5d_154d08fc","line":252,"range":{"start_line":251,"start_character":15,"end_line":252,"end_character":72},"in_reply_to":"acc7446d_06802a4d","updated":"2020-11-25 17:10:39.000000000","message":"Yup there can be duplicates. But the following method that uses the sec_grp_ids already does the deduplication work: https://review.opendev.org/c/openstack/neutron/+/763828/2/neutron/agent/securitygroups_rpc.py#234. I also changed to use set here anyway for extra safety.","commit_id":"5748676aee612054775196ba0e336334730bad04"}],"neutron/tests/unit/plugins/ml2/test_ovo_rpc.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b92fc32a930f1b59b58e2c5f21f4b095abd06c8b","unresolved":true,"context_lines":[{"line_number":50,"context_line":"                    if count \u003d\u003d 1:"},{"line_number":51,"context_line":"                        return obj"},{"line_number":52,"context_line":"        if count \u003e 1:"},{"line_number":53,"context_line":"            self.assertEqual(match, count)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":"        self.fail(\"Could not find OVO %s with ID %s in %s\" %"},{"line_number":56,"context_line":"                  (ovotype, oid, self.received))"}],"source_content_type":"text/x-python","patch_set":6,"id":"04fee5bf_2d957136","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":42},"updated":"2020-12-07 08:26:33.000000000","message":"Would be good to add assertion fail message like the one #55","commit_id":"2cbee303baa1dce9ead34ba38fbb10562159088d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"547a25f271cd2c27c44470cc0e53a98728b2da15","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    if count \u003d\u003d 1:"},{"line_number":51,"context_line":"                        return obj"},{"line_number":52,"context_line":"        if count \u003e 1:"},{"line_number":53,"context_line":"            self.assertEqual(match, count)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":"        self.fail(\"Could not find OVO %s with ID %s in %s\" %"},{"line_number":56,"context_line":"                  (ovotype, oid, self.received))"}],"source_content_type":"text/x-python","patch_set":6,"id":"e7ccc0ab_24a23c7e","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":42},"in_reply_to":"04fee5bf_2d957136","updated":"2020-12-11 00:18:48.000000000","message":"Done","commit_id":"2cbee303baa1dce9ead34ba38fbb10562159088d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b92fc32a930f1b59b58e2c5f21f4b095abd06c8b","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        if count \u003e 1:"},{"line_number":53,"context_line":"            self.assertEqual(match, count)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":"        self.fail(\"Could not find OVO %s with ID %s in %s\" %"},{"line_number":56,"context_line":"                  (ovotype, oid, self.received))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_network_lifecycle(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"e8d778d9_11814f47","line":55,"range":{"start_line":55,"start_character":19,"end_line":55,"end_character":57},"updated":"2020-12-07 08:26:33.000000000","message":"oid or event, right? (oid might be None)","commit_id":"2cbee303baa1dce9ead34ba38fbb10562159088d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"547a25f271cd2c27c44470cc0e53a98728b2da15","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if count \u003e 1:"},{"line_number":53,"context_line":"            self.assertEqual(match, count)"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":"        self.fail(\"Could not find OVO %s with ID %s in %s\" %"},{"line_number":56,"context_line":"                  (ovotype, oid, self.received))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_network_lifecycle(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9608aae7_6aeb652b","line":55,"range":{"start_line":55,"start_character":19,"end_line":55,"end_character":57},"in_reply_to":"e8d778d9_11814f47","updated":"2020-12-11 00:18:48.000000000","message":"Done","commit_id":"2cbee303baa1dce9ead34ba38fbb10562159088d"}]}
