)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"002cfa6e1bd50cbd7d07416ff1b4a53bb9d26a09","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7516d4853fde356d0e1860d91fb3141e515df435"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9e35dde3b1f6299ca097acabd531902063cbfe70"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASn%2F%2FfWo%3D","line":14,"updated":"2013-09-04 06:22:33.000000000","message":"Two change-ids? This could lead to some problems in gerrit..","commit_id":"22e81c0af4cc18798f65485c8247a8ef5ab74e15"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"207e3d4cd966e9b633b313fba629f28d46527a7c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yair Fried \u003cyfried@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-09-08 13:36:43 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added an api test for security_groups (pep8 fix)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"api test to security groups and rules."},{"line_number":10,"context_line":"add needed support to network_client (json and xml)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAASn%2F%2FIJg%3D","line":7,"updated":"2013-09-11 14:27:04.000000000","message":"You don\u0027t need \"(pep8 fix)\" here","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"}],"tempest/api/network/test_security_groups.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"e4778275dad9b67bcf50d97c3d93379d9cd86f95","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            rules_list.append(rule[\u0027id\u0027])"},{"line_number":53,"context_line":"        self.assertNotIn(rule_id, rules_list)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_list_security_groups(self):"},{"line_number":56,"context_line":"        # Verify the that security group belonging to tenant exist in list"},{"line_number":57,"context_line":"        resp, body \u003d self.client.list_security_groups()"},{"line_number":58,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2FoZE%3D","line":55,"updated":"2013-09-02 07:10:54.000000000","message":"does it miss \"@attr(type\u003d\u0027gate\u0027)\" ?","commit_id":"c99212dabea46d6d382f0a34d864e076213544da"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43be4d0743c81e4d502aa73ddeac2e58a2106ef2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":74,"context_line":"        self.addCleanup(self._delete_security_group,"},{"line_number":75,"context_line":"                        group_create_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":76,"context_line":"        self.assertEqual(group_create_body[\u0027security_group\u0027][\u0027name\u0027], name)"},{"line_number":77,"context_line":"        # Show details of the created security group"},{"line_number":78,"context_line":"        resp, show_body \u003d self.client.show_security_group("},{"line_number":79,"context_line":"            group_create_body[\u0027security_group\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FQl0%3D","line":76,"updated":"2013-09-09 05:53:44.000000000","message":"nit: If adding a blank here, it makes the code readable.","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43be4d0743c81e4d502aa73ddeac2e58a2106ef2","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        resp, show_body \u003d self.client.show_security_group("},{"line_number":79,"context_line":"            group_create_body[\u0027security_group\u0027][\u0027id\u0027])"},{"line_number":80,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":81,"context_line":"        self.assertEqual(show_body[\u0027security_group\u0027][\u0027name\u0027], name)"},{"line_number":82,"context_line":"        # List security groups and verify if created group is there in response"},{"line_number":83,"context_line":"        resp, list_body \u003d self.client.list_security_groups()"},{"line_number":84,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FQls%3D","line":81,"updated":"2013-09-09 05:53:44.000000000","message":"ditto","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43be4d0743c81e4d502aa73ddeac2e58a2106ef2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        resp, show_rule_body \u003d self.client.show_security_group_rule("},{"line_number":99,"context_line":"            rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027]"},{"line_number":100,"context_line":"        )"},{"line_number":101,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":102,"context_line":"        # List rules and verify created rule is in response"},{"line_number":103,"context_line":"        resp, rule_list_body \u003d self.client.list_security_group_rules()"},{"line_number":104,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FQlk%3D","line":101,"updated":"2013-09-09 05:53:44.000000000","message":"ditto","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"979111d89343ab70f5f853c824be38bb08e3ab20","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        resp, rule_list_body \u003d self.client.list_security_group_rules()"},{"line_number":104,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":105,"context_line":"        rule_list \u003d list()"},{"line_number":106,"context_line":"        for rule in rule_list_body[\u0027security_group_rules\u0027]:"},{"line_number":107,"context_line":"            rule_list.append(rule[\u0027id\u0027])"},{"line_number":108,"context_line":"        self.assertIn(rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027], rule_list)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FRMc%3D","line":106,"updated":"2013-09-08 16:13:46.000000000","message":"List Comprehension might be simpler.","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43be4d0743c81e4d502aa73ddeac2e58a2106ef2","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":111,"context_line":"    def test_show_non_existent_security_group(self):"},{"line_number":112,"context_line":"        non_exist_id \u003d rand_name(\u0027secgroup\u0027)"},{"line_number":113,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.show_security_group,"},{"line_number":114,"context_line":"                          non_exist_id)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FQmQ%3D","line":112,"updated":"2013-09-09 05:53:44.000000000","message":"nit: rand_name(\u0027secgroup-\u0027) would fit to here like line71.","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43be4d0743c81e4d502aa73ddeac2e58a2106ef2","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027smoke\u0027])"},{"line_number":117,"context_line":"    def test_show_non_existent_security_group_rule(self):"},{"line_number":118,"context_line":"        non_exist_id \u003d rand_name(\u0027rule\u0027)"},{"line_number":119,"context_line":"        self.assertRaises(exceptions.NotFound,"},{"line_number":120,"context_line":"                          self.client.show_security_group_rule,"},{"line_number":121,"context_line":"                          non_exist_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FQmM%3D","line":118,"updated":"2013-09-09 05:53:44.000000000","message":"nit: rand_name(\u0027rule-\u0027) would fit to here like line71.","commit_id":"123fb6a072bbafb9ffdac870c7f7de703801f24a"}],"tempest/services/network/json/network_client.py":[{"author":{"_account_id":6690,"name":"Rami Vaknin","email":"rvaknin@redhat.com","username":"rvaknin"},"change_message_id":"68eff05a2c41863329d5f7ae31ab9ade5ed5ca76","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":298,"context_line":"        return resp, body"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def create_security_group(self, name):"},{"line_number":301,"context_line":"        post_body \u003d {"},{"line_number":302,"context_line":"            \u0027security_group\u0027: {"},{"line_number":303,"context_line":"                \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2Fnzs%3D","line":300,"updated":"2013-09-02 10:48:30.000000000","message":"Missing a \"description\" parameter which the user might want to use.","commit_id":"d89fe7082401d139f85a54f71b5bbf4ce5a2e17f"},{"author":{"_account_id":6690,"name":"Rami Vaknin","email":"rvaknin@redhat.com","username":"rvaknin"},"change_message_id":"68eff05a2c41863329d5f7ae31ab9ade5ed5ca76","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        post_body[\u0027security_group_rule\u0027][\u0027remote_group_id\u0027] \u003d kwargs.get("},{"line_number":339,"context_line":"            \u0027remote_group_id\u0027, None)"},{"line_number":340,"context_line":"        post_body[\u0027security_group_rule\u0027][\u0027remote_ip_prefix\u0027] \u003d kwargs.get("},{"line_number":341,"context_line":"            \u0027remote_ip_prefix\u0027, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":344,"context_line":"        uri \u003d \u0027%s/security-group-rules\u0027 % (self.uri_prefix)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FnzQ%3D","line":341,"updated":"2013-09-02 10:48:30.000000000","message":"missing \"ethertype\" handling.\nYou could also iterate on the kwargs keys and add them in a loop, something like (untested):\nfor k in kwargs.keys():\n    post_body[\u0027security_group_rule\u0027][k] \u003d kwargs[k]","commit_id":"d89fe7082401d139f85a54f71b5bbf4ce5a2e17f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"14a44e91f14cc67272c427227b2fa7edb3dd4276","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        post_body[\u0027security_group_rule\u0027][\u0027remote_group_id\u0027] \u003d kwargs.get("},{"line_number":339,"context_line":"            \u0027remote_group_id\u0027, None)"},{"line_number":340,"context_line":"        post_body[\u0027security_group_rule\u0027][\u0027remote_ip_prefix\u0027] \u003d kwargs.get("},{"line_number":341,"context_line":"            \u0027remote_ip_prefix\u0027, None)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":344,"context_line":"        uri \u003d \u0027%s/security-group-rules\u0027 % (self.uri_prefix)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FnrI%3D","line":341,"in_reply_to":"AAAASn%2F%2FnzQ%3D","updated":"2013-09-03 11:10:16.000000000","message":"in loop case:\nwhat if user entered bad kwarg, ie \"descraption\"?","commit_id":"d89fe7082401d139f85a54f71b5bbf4ce5a2e17f"},{"author":{"_account_id":6690,"name":"Rami Vaknin","email":"rvaknin@redhat.com","username":"rvaknin"},"change_message_id":"68eff05a2c41863329d5f7ae31ab9ade5ed5ca76","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def delete_security_group_rule(self, rule_id):"},{"line_number":350,"context_line":"        uri \u003d \u0027%s/security-group-rules/%s\u0027 % (self.uri_prefix, rule_id)"},{"line_number":351,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":352,"context_line":"        return resp, body"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def show_security_group_rule(self, rule_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FnzE%3D","line":351,"updated":"2013-09-02 10:48:30.000000000","message":"Might be that json.loads is missing here.","commit_id":"d89fe7082401d139f85a54f71b5bbf4ce5a2e17f"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"14a44e91f14cc67272c427227b2fa7edb3dd4276","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def delete_security_group_rule(self, rule_id):"},{"line_number":350,"context_line":"        uri \u003d \u0027%s/security-group-rules/%s\u0027 % (self.uri_prefix, rule_id)"},{"line_number":351,"context_line":"        resp, body \u003d self.delete(uri, self.headers)"},{"line_number":352,"context_line":"        return resp, body"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def show_security_group_rule(self, rule_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FnoE%3D","line":351,"in_reply_to":"AAAASn%2F%2FnzE%3D","updated":"2013-09-03 11:10:16.000000000","message":"no json.load on any other delete func (router, net, etc)","commit_id":"d89fe7082401d139f85a54f71b5bbf4ce5a2e17f"}]}
