)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4da85b4d558918b3b98faf638455c761fcc49083","unresolved":false,"context_lines":[{"line_number":10,"context_line":"would respond that the rule was already part of the security group. This"},{"line_number":11,"context_line":"was occuring as the query filter to the db would wildcard remote_group_id"},{"line_number":12,"context_line":"thus the default rule which allowed all IPv4 traffic to members of the same"},{"line_number":13,"context_line":"group was being matched (which wasn\u0027t a match). This patch addresses"},{"line_number":14,"context_line":"this issue."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I0320013a3869d25fb424995354721929465d2848"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2BPjs%3D","line":13,"updated":"2013-11-28 12:56:23.000000000","message":"Optional advise:\n\nThis happened as the filter for querying existing rules uses a wildcard for remote_group_id thus returning a false match.","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0d109588828015d1b78249365ff23793b224e088","unresolved":false,"context_lines":[{"line_number":10,"context_line":"would respond that the rule was already part of the security group. This"},{"line_number":11,"context_line":"was occuring as the query filter to the db would wildcard remote_group_id"},{"line_number":12,"context_line":"thus the default rule which allowed all IPv4 traffic to members of the same"},{"line_number":13,"context_line":"group was being matched (which wasn\u0027t a match). This patch addresses"},{"line_number":14,"context_line":"this issue."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I0320013a3869d25fb424995354721929465d2848"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAATn%2F%2BJpk%3D","line":13,"in_reply_to":"AAAATn%2F%2BPjs%3D","updated":"2013-12-01 18:22:03.000000000","message":"Done","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"}],"neutron/db/securitygroups_db.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"b9658fea61a4caa87d08aa288b753854050781b9","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bqs0%3D","line":401,"updated":"2013-11-21 20:01:42.000000000","message":"I\u0027m afraid the intent of this line is unclear to me.","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"3bc62eec35af74080ef1a6df0c19e6a304bc7bea","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BoEA%3D","line":401,"updated":"2013-11-22 09:45:46.000000000","message":"May be a rephrase would help (warning: \"me\" no native english speaker, so don\u0027t take me very seriously), either I\u0027m not sure if I totally understood:\n\n\"\"\"\nThe call to get_security_group_rules return all security groups when using wildcards ([None]), even the ones where value is not None.\n\"\"\"","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"be14fbd9fa269d60d88a08c97f401a3d6b557aff","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BnQE%3D","line":401,"in_reply_to":"AAAATn%2F%2BoEA%3D","updated":"2013-11-22 13:48:15.000000000","message":"Done","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"18e250482215cbb946442c3c1075df856750ca12","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BqUw%3D","line":401,"in_reply_to":"AAAATn%2F%2Bqs0%3D","updated":"2013-11-21 21:39:58.000000000","message":"Hi Maru, \n\nIf I set he filter to {remote_security_group_id: [None]} this will return all security groups even the ones where the value is not None because of how _get_collection() is implemented.","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"b9658fea61a4caa87d08aa288b753854050781b9","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."},{"line_number":405,"context_line":"                # Therefore, we do the filtering below to check for these"},{"line_number":406,"context_line":"                # corner cases."},{"line_number":407,"context_line":"                for security_group_rule in security_group_rules:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bqss%3D","line":404,"updated":"2013-11-21 20:01:42.000000000","message":"Maru\u0027s magic spell checker:\n\nrelaying -\u003e relying\n\nbehavor -\u003e behavior","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"18e250482215cbb946442c3c1075df856750ca12","unresolved":false,"context_lines":[{"line_number":401,"context_line":"                # elements not found in included thoase set to [None]."},{"line_number":402,"context_line":"                # Therefore it is not possible to do this query unless the"},{"line_number":403,"context_line":"                # behavior of _get_collection() is changed which cannot be"},{"line_number":404,"context_line":"                # because other methods are already relaying on this behavor."},{"line_number":405,"context_line":"                # Therefore, we do the filtering below to check for these"},{"line_number":406,"context_line":"                # corner cases."},{"line_number":407,"context_line":"                for security_group_rule in security_group_rules:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BqU0%3D","line":404,"in_reply_to":"AAAATn%2F%2Bqss%3D","updated":"2013-11-21 21:39:58.000000000","message":"Done","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d5642c60b3b73ee6c11f668998d479e2cea64192","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # corner cases."},{"line_number":407,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":408,"context_line":"                    for db_rule in db_rules:"},{"line_number":409,"context_line":"                        # need to remove from id from db_rule for matching"},{"line_number":410,"context_line":"                        id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                        if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d"},{"line_number":412,"context_line":"                            db_rule):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Borc%3D","line":409,"updated":"2013-11-22 07:08:09.000000000","message":"nit: seems one \u0027from\u0027 is redundant","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"be14fbd9fa269d60d88a08c97f401a3d6b557aff","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                # corner cases."},{"line_number":407,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":408,"context_line":"                    for db_rule in db_rules:"},{"line_number":409,"context_line":"                        # need to remove from id from db_rule for matching"},{"line_number":410,"context_line":"                        id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                        if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d"},{"line_number":412,"context_line":"                            db_rule):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BnQI%3D","line":409,"in_reply_to":"AAAATn%2F%2Borc%3D","updated":"2013-11-22 13:48:15.000000000","message":"Done","commit_id":"ded0d2e2af80236e849eac1864470d74141c93a7"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"983cf7d4f1d81b0c9944d5c193dab9ba4d77c8d3","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            # Check in database if rule exists"},{"line_number":397,"context_line":"            filters \u003d self._make_security_group_rule_filter_dict(i)"},{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # values in the filter that have a value of [None]. For"},{"line_number":402,"context_line":"                # example, filters \u003d {\u0027remote_group_id\u0027: [None]} will return"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BhQM%3D","line":399,"updated":"2013-11-25 08:20:08.000000000","message":"You can do:\n\n for db_rule in db_rules:\n      for security_group_rule in security_group_rules:\n      ...\n\nand remove \"if\" construction. Or is there any reason for it I don\u0027t see?","commit_id":"fa9e3fda611ae8a18dcd1f445cb0884929b2e265"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"34ec12f78708003525ac231e15123ad32f5eae88","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            # Check in database if rule exists"},{"line_number":397,"context_line":"            filters \u003d self._make_security_group_rule_filter_dict(i)"},{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            if db_rules:"},{"line_number":400,"context_line":"                # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":401,"context_line":"                # values in the filter that have a value of [None]. For"},{"line_number":402,"context_line":"                # example, filters \u003d {\u0027remote_group_id\u0027: [None]} will return"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BfsY%3D","line":399,"in_reply_to":"AAAATn%2F%2BhQM%3D","updated":"2013-11-25 14:10:57.000000000","message":"You are right. Thanks","commit_id":"fa9e3fda611ae8a18dcd1f445cb0884929b2e265"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a6577f7ac15c370d6696a0e44b577df2823ad97","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":410,"context_line":"                    # need to remove id from db_rule for matching"},{"line_number":411,"context_line":"                    id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Bfco%3D","line":411,"updated":"2013-11-25 14:58:46.000000000","message":"You must move this pop() out of the inner loop.","commit_id":"aa99362ce2d114b51949469783031b83862a8574"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"6ff3fdefc1eec3f1e5e73473a922b4194ec33672","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":410,"context_line":"                    # need to remove id from db_rule for matching"},{"line_number":411,"context_line":"                    id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BfbM%3D","line":411,"in_reply_to":"AAAATn%2F%2Bfco%3D","updated":"2013-11-25 15:02:07.000000000","message":"Done","commit_id":"aa99362ce2d114b51949469783031b83862a8574"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4da85b4d558918b3b98faf638455c761fcc49083","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                    found_self \u003d True"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"            # Check in database if rule exists"},{"line_number":397,"context_line":"            filters \u003d self._make_security_group_rule_filter_dict(i)"},{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":400,"context_line":"            # values in the filter that have a value of [None]. For"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BPXo%3D","line":397,"updated":"2013-11-28 12:56:23.000000000","message":"it won\u0027t be a bad idea to pass here only the attributes of i whose value is not none","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0d109588828015d1b78249365ff23793b224e088","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                    found_self \u003d True"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"            # Check in database if rule exists"},{"line_number":397,"context_line":"            filters \u003d self._make_security_group_rule_filter_dict(i)"},{"line_number":398,"context_line":"            db_rules \u003d self.get_security_group_rules(context, filters)"},{"line_number":399,"context_line":"            # Note(arosen): the call to get_security_group_rules wildcards"},{"line_number":400,"context_line":"            # values in the filter that have a value of [None]. For"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJpo%3D","line":397,"in_reply_to":"AAAATn%2F%2BPXo%3D","updated":"2013-12-01 18:22:03.000000000","message":"Why?","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4da85b4d558918b3b98faf638455c761fcc49083","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BPX0%3D","line":411,"updated":"2013-11-28 12:56:23.000000000","message":"should this be compared with i only?","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0d109588828015d1b78249365ff23793b224e088","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJp0%3D","line":411,"in_reply_to":"AAAATn%2F%2BPX0%3D","updated":"2013-12-01 18:22:03.000000000","message":"gah definitely!","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"4da85b4d558918b3b98faf638455c761fcc49083","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    def get_security_group_rules(self, context, filters\u003dNone, fields\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BPXg%3D","line":412,"updated":"2013-11-28 12:56:23.000000000","message":"I would just verify that all the attributes which were set to none in i are not-None in db_rule and otherwise raise","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"0d109588828015d1b78249365ff23793b224e088","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                for security_group_rule in security_group_rules:"},{"line_number":412,"context_line":"                    if (security_group_rule[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":413,"context_line":"                        raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    def get_security_group_rules(self, context, filters\u003dNone, fields\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJps%3D","line":412,"in_reply_to":"AAAATn%2F%2BPXg%3D","updated":"2013-12-01 18:22:03.000000000","message":"Probably iterating through i to find those and then doing the compair is more expensive that just compairing i[\u0027security_group_rule\u0027]  \u003d\u003d db_rule.","commit_id":"60aed831e284f45c4620142ed9836009ffeaf031"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"1b90e31a6148d0f0e2fcda820523653010655aaa","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            # below to check for these corner cases."},{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                if (i[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":412,"context_line":"                    raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F99ec%3D","line":410,"updated":"2013-12-04 00:08:14.000000000","message":"410 can go after the 411","commit_id":"9335ffd7c3eaad0d66d7d19e7760ae12476a5ea2"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"401f3a009869a159cd9a51ad8c5ee60d12639acc","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            # below to check for these corner cases."},{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                if (i[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":412,"context_line":"                    raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9zdA%3D","line":410,"in_reply_to":"AAAATn%2F95w8%3D","updated":"2013-12-05 18:17:07.000000000","message":"I got it. sorry","commit_id":"9335ffd7c3eaad0d66d7d19e7760ae12476a5ea2"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"434aa263478f9aedb8078f940df662bc47b104c0","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            # below to check for these corner cases."},{"line_number":408,"context_line":"            for db_rule in db_rules:"},{"line_number":409,"context_line":"                # need to remove id from db_rule for matching"},{"line_number":410,"context_line":"                id \u003d db_rule.pop(\u0027id\u0027)"},{"line_number":411,"context_line":"                if (i[\u0027security_group_rule\u0027] \u003d\u003d db_rule):"},{"line_number":412,"context_line":"                    raise ext_sg.SecurityGroupRuleExists(id\u003did)"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F95w8%3D","line":410,"in_reply_to":"AAAATn%2F99ec%3D","updated":"2013-12-04 17:29:31.000000000","message":"No it can\u0027t other wise the \u003d\u003d check on line 411 won\u0027t work because it has the id in the dict which doesn\u0027t have to do with the rule matching. See comment on line 409.","commit_id":"9335ffd7c3eaad0d66d7d19e7760ae12476a5ea2"}]}
