)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tomoe Sugihara \u003ctomoe@midokura.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-03-04 11:10:33 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Populate deafult explicit allow rules for egress"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This way, the default behavior becomes visible, clear and"},{"line_number":10,"context_line":"symmetric to ingress processing."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAN3%2F%2F%2Fx0%3D","line":7,"updated":"2013-03-04 03:43:40.000000000","message":"default*","commit_id":"01b4b0d22fd3fc0effb0573c1e05d5ca3bf265c5"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tomoe Sugihara \u003ctomoe@midokura.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-03-04 11:10:33 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Populate deafult explicit allow rules for egress"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This way, the default behavior becomes visible, clear and"},{"line_number":10,"context_line":"symmetric to ingress processing."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAN3%2F%2F%2FaA%3D","line":7,"in_reply_to":"AAAAN3%2F%2F%2Fx0%3D","updated":"2013-03-04 13:48:25.000000000","message":"Will fix.","commit_id":"01b4b0d22fd3fc0effb0573c1e05d5ca3bf265c5"}],"quantum/db/securitygroups_db.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        id\u003duuidutils.generate_uuid(), tenant_id\u003dtenant_id,"},{"line_number":118,"context_line":"                        security_group\u003dsecurity_group_db,"},{"line_number":119,"context_line":"                        direction\u003d\u0027egress\u0027,"},{"line_number":120,"context_line":"                        ethertype\u003dethertype)"},{"line_number":121,"context_line":"                    context.session.add(egress_rule)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        return self._make_security_group_dict(security_group_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2F%2Fpk%3D","line":120,"updated":"2013-03-04 09:40:58.000000000","message":"We seem to have a consensus to allow egress packets for all security groups. I believe the default egress above needs to be added to every security group.","commit_id":"01b4b0d22fd3fc0effb0573c1e05d5ca3bf265c5"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        id\u003duuidutils.generate_uuid(), tenant_id\u003dtenant_id,"},{"line_number":118,"context_line":"                        security_group\u003dsecurity_group_db,"},{"line_number":119,"context_line":"                        direction\u003d\u0027egress\u0027,"},{"line_number":120,"context_line":"                        ethertype\u003dethertype)"},{"line_number":121,"context_line":"                    context.session.add(egress_rule)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        return self._make_security_group_dict(security_group_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAN3%2F%2F%2FaE%3D","line":120,"in_reply_to":"AAAAN3%2F%2F%2Fpk%3D","updated":"2013-03-04 13:48:25.000000000","message":"Yes. Will do.","commit_id":"01b4b0d22fd3fc0effb0573c1e05d5ca3bf265c5"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                        source_group\u003dsecurity_group_db)"},{"line_number":114,"context_line":"                    context.session.add(ingress_rule)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                egress_rule \u003d SecurityGroupRule("},{"line_number":117,"context_line":"                    id\u003duuidutils.generate_uuid(), tenant_id\u003dtenant_id,"},{"line_number":118,"context_line":"                    security_group\u003dsecurity_group_db,"},{"line_number":119,"context_line":"                    direction\u003d\u0027egress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9dQ%3D","line":116,"updated":"2013-03-05 07:36:49.000000000","message":"indent over... Should be under if s.get(\u0027name\u0027) \u003d\u003d\u0027default\u0027:","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                        source_group\u003dsecurity_group_db)"},{"line_number":114,"context_line":"                    context.session.add(ingress_rule)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                egress_rule \u003d SecurityGroupRule("},{"line_number":117,"context_line":"                    id\u003duuidutils.generate_uuid(), tenant_id\u003dtenant_id,"},{"line_number":118,"context_line":"                    security_group\u003dsecurity_group_db,"},{"line_number":119,"context_line":"                    direction\u003d\u0027egress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9a4%3D","line":116,"in_reply_to":"AAAAN3%2F%2F9b8%3D","updated":"2013-03-05 07:53:10.000000000","message":"Oops yes right.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":113,"context_line":"                        source_group\u003dsecurity_group_db)"},{"line_number":114,"context_line":"                    context.session.add(ingress_rule)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"                egress_rule \u003d SecurityGroupRule("},{"line_number":117,"context_line":"                    id\u003duuidutils.generate_uuid(), tenant_id\u003dtenant_id,"},{"line_number":118,"context_line":"                    security_group\u003dsecurity_group_db,"},{"line_number":119,"context_line":"                    direction\u003d\u0027egress\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9b8%3D","line":116,"in_reply_to":"AAAAN3%2F%2F9dQ%3D","updated":"2013-03-05 07:48:05.000000000","message":"This is intended. Default explicit rules are populated even for non-default SG just as Amazon VPC.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"}],"quantum/tests/unit/test_db_plugin.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":594,"context_line":"    def _test_list_with_pagination(self, collection, items, sort,"},{"line_number":595,"context_line":"                                   limit, expected_page_num, query_params\u003d\u0027\u0027,"},{"line_number":596,"context_line":"                                   verify_key\u003d\u0027id\u0027):"},{"line_number":597,"context_line":"        sort_key, sort_dir \u003d sort"},{"line_number":598,"context_line":"        query_str \u003d query_params + \u0027\u0026\u0027 if query_params else \u0027\u0027"},{"line_number":599,"context_line":"        query_str \u003d query_str + (\"limit\u003d%s\u0026sort_key\u003d%s\u0026\""},{"line_number":600,"context_line":"                                 \"sort_dir\u003d%s\") % (limit, sort_key, sort_dir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9dI%3D","line":597,"updated":"2013-03-05 07:36:49.000000000","message":"why is this needed ? If needed there should me a commit in the commit message.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":594,"context_line":"    def _test_list_with_pagination(self, collection, items, sort,"},{"line_number":595,"context_line":"                                   limit, expected_page_num, query_params\u003d\u0027\u0027,"},{"line_number":596,"context_line":"                                   verify_key\u003d\u0027id\u0027):"},{"line_number":597,"context_line":"        sort_key, sort_dir \u003d sort"},{"line_number":598,"context_line":"        query_str \u003d query_params + \u0027\u0026\u0027 if query_params else \u0027\u0027"},{"line_number":599,"context_line":"        query_str \u003d query_str + (\"limit\u003d%s\u0026sort_key\u003d%s\u0026\""},{"line_number":600,"context_line":"                                 \"sort_dir\u003d%s\") % (limit, sort_key, sort_dir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9bs%3D","line":597,"in_reply_to":"AAAAN3%2F%2F9dI%3D","updated":"2013-03-05 07:48:05.000000000","message":"Not needed.\nI was just touching here to make some tests pass and thought this would be more readable. But I will revert this.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"}],"quantum/tests/unit/test_extension_security_group.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                                                            port_range_max\u003d24)"},{"line_number":667,"context_line":"                                   ) as (sgr1, sgr2, sgr3):"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"                # Delete default rules as they would fail the following"},{"line_number":670,"context_line":"                # assertion at the end."},{"line_number":671,"context_line":"                # assertion at the end."},{"line_number":672,"context_line":"                self._delete_default_security_group_egress_rules("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9c4%3D","line":669,"updated":"2013-03-05 07:36:49.000000000","message":"I\u0027m not clear why this is needed but I suspect it isn\u0027t  / shouldn\u0027t be solved this way.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                                                            port_range_max\u003d24)"},{"line_number":667,"context_line":"                                   ) as (sgr1, sgr2, sgr3):"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"                # Delete default rules as they would fail the following"},{"line_number":670,"context_line":"                # assertion at the end."},{"line_number":671,"context_line":"                # assertion at the end."},{"line_number":672,"context_line":"                self._delete_default_security_group_egress_rules("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9ak%3D","line":669,"in_reply_to":"AAAAN3%2F%2F9bY%3D","updated":"2013-03-05 07:53:10.000000000","message":"Oh I see what\u0027s going on here. Sorry... This is probably fine.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":666,"context_line":"                                                            port_range_max\u003d24)"},{"line_number":667,"context_line":"                                   ) as (sgr1, sgr2, sgr3):"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"                # Delete default rules as they would fail the following"},{"line_number":670,"context_line":"                # assertion at the end."},{"line_number":671,"context_line":"                # assertion at the end."},{"line_number":672,"context_line":"                self._delete_default_security_group_egress_rules("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9bY%3D","line":669,"in_reply_to":"AAAAN3%2F%2F9c4%3D","updated":"2013-03-05 07:48:05.000000000","message":"Yeah, this is where I need helps from pople who are familiar with this part.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":668,"context_line":""},{"line_number":669,"context_line":"                # Delete default rules as they would fail the following"},{"line_number":670,"context_line":"                # assertion at the end."},{"line_number":671,"context_line":"                # assertion at the end."},{"line_number":672,"context_line":"                self._delete_default_security_group_egress_rules("},{"line_number":673,"context_line":"                        security_group_id)"},{"line_number":674,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9cw%3D","line":671,"updated":"2013-03-05 07:36:49.000000000","message":"670 is the same line as 671","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":668,"context_line":""},{"line_number":669,"context_line":"                # Delete default rules as they would fail the following"},{"line_number":670,"context_line":"                # assertion at the end."},{"line_number":671,"context_line":"                # assertion at the end."},{"line_number":672,"context_line":"                self._delete_default_security_group_egress_rules("},{"line_number":673,"context_line":"                        security_group_id)"},{"line_number":674,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAN3%2F%2F9bg%3D","line":671,"in_reply_to":"AAAAN3%2F%2F9cw%3D","updated":"2013-03-05 07:48:05.000000000","message":"Oops. This is my sloppiness.","commit_id":"5810137a90825dd39e9e4a8e9c9e2dc3e8f568cc"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":242,"context_line":"        keys \u003d [(\u0027name\u0027, name,), (\u0027description\u0027, description)]"},{"line_number":243,"context_line":"        with self.security_group(name, description) as security_group:"},{"line_number":244,"context_line":"            for k, v, in keys:"},{"line_number":245,"context_line":"                self.assertEqual(security_group[\u0027security_group\u0027][k], v)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_default_security_group(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAN3%2F%2F7Vc%3D","line":244,"updated":"2013-03-06 04:17:24.000000000","message":"add check here that only egress rules exist in group.","commit_id":"44950692aa74744f70efcc6dccf7b58872eaa963"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            self.assertEqual(len(rules[\u0027security_group_rules\u0027]), 4)"},{"line_number":415,"context_line":"            # just generic rules to allow default egress and"},{"line_number":416,"context_line":"            # intergroup communicartion"},{"line_number":417,"context_line":"            for rule in rules[\u0027security_group_rules\u0027]:"},{"line_number":418,"context_line":"                self.assertEqual(rule[\u0027port_range_max\u0027], None)"},{"line_number":419,"context_line":"                self.assertEqual(rule[\u0027port_range_min\u0027], None)"},{"line_number":420,"context_line":"                self.assertEqual(rule[\u0027protocol\u0027], None)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAN3%2F%2F7Vg%3D","line":417,"updated":"2013-03-06 04:17:24.000000000","message":"Could you extend this test here to have it check for the direction values (ingres/egress) that should be in the default group","commit_id":"44950692aa74744f70efcc6dccf7b58872eaa963"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c533b1b9684ecedffcb641a7e75c3c408f2c803a","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.assertEqual(len(rules), 1)"},{"line_number":477,"context_line":"            v6_egress \u003d rules[0]"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"            expected \u003d {\u0027direction\u0027: \u0027egress\u0027,"},{"line_number":480,"context_line":"                        \u0027ethertype\u0027: \u0027IPv6\u0027,"},{"line_number":481,"context_line":"                        \u0027remote_group_id\u0027: None,"},{"line_number":482,"context_line":"                        \u0027remote_ip_prefix\u0027: None,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F7Jg%3D","line":479,"updated":"2013-03-06 08:28:39.000000000","message":"I was thinking we could  just do: expected[\u0027ethertype\u0027] \u003d \"IPv6\" here instead of creating a new expected dict each time but im okay with this.","commit_id":"7e26074be5dbe1a9b629b035da46e7122c4c34c9"},{"author":{"_account_id":1935,"name":"Tomoe Sugihara","email":"tomoe.sugihara@gmail.com","username":"tomoe"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.assertEqual(len(rules), 1)"},{"line_number":477,"context_line":"            v6_egress \u003d rules[0]"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"            expected \u003d {\u0027direction\u0027: \u0027egress\u0027,"},{"line_number":480,"context_line":"                        \u0027ethertype\u0027: \u0027IPv6\u0027,"},{"line_number":481,"context_line":"                        \u0027remote_group_id\u0027: None,"},{"line_number":482,"context_line":"                        \u0027remote_ip_prefix\u0027: None,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F7IE%3D","line":479,"in_reply_to":"AAAAN3%2F%2F7I0%3D","updated":"2013-03-06 08:55:44.000000000","message":"I originally thought so, too. But this is more explicit and easy too see what I\u0027m verifying against. Especially in the test code, performance is not as big deal as in production code :-) Thanks for the comments.","commit_id":"7e26074be5dbe1a9b629b035da46e7122c4c34c9"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"            self.assertEqual(len(rules), 1)"},{"line_number":477,"context_line":"            v6_egress \u003d rules[0]"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"            expected \u003d {\u0027direction\u0027: \u0027egress\u0027,"},{"line_number":480,"context_line":"                        \u0027ethertype\u0027: \u0027IPv6\u0027,"},{"line_number":481,"context_line":"                        \u0027remote_group_id\u0027: None,"},{"line_number":482,"context_line":"                        \u0027remote_ip_prefix\u0027: None,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAN3%2F%2F7I0%3D","line":479,"in_reply_to":"AAAAN3%2F%2F7Jg%3D","updated":"2013-03-06 08:45:48.000000000","message":"I\u0027m okay too.","commit_id":"7e26074be5dbe1a9b629b035da46e7122c4c34c9"}]}
