)]}'
{"tempest/api/network/test_security_groups.py":[{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"8292af6cdf033211e8e74257de4af17be3767d75","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                            )"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"            # Show details of the created security rule"},{"line_number":92,"context_line":"            resp, show_rule_body \u003d self.client.show_security_group_rule("},{"line_number":93,"context_line":"                rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027]"},{"line_number":94,"context_line":"            )"},{"line_number":95,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_977d2cb4","line":92,"updated":"2014-05-14 11:14:29.000000000","message":"unused variable \"show_rule_body\"","commit_id":"151f09c511054a4dbe67bf8a4dc2b3a8ec6bae13"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"6da0392ec96e7674380a16e6800c0c6e7ea2f0ad","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                            )"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"            # Show details of the created security rule"},{"line_number":92,"context_line":"            resp, show_rule_body \u003d self.client.show_security_group_rule("},{"line_number":93,"context_line":"                rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027]"},{"line_number":94,"context_line":"            )"},{"line_number":95,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_6330db01","line":92,"in_reply_to":"7adec928_977d2cb4","updated":"2014-05-14 18:43:05.000000000","message":"Done. Thanks for the review.","commit_id":"151f09c511054a4dbe67bf8a4dc2b3a8ec6bae13"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c694c34688f517a6c147f0c44a0145a476ad6963","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            )"},{"line_number":95,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":96,"context_line":"            self.assertEqual(rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027],"},{"line_number":97,"context_line":"                             show_rule_body[\u0027security_group_rule\u0027][\u0027id\u0027])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            # List rules and verify created rule is in response"},{"line_number":100,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_b4ce982c","line":97,"updated":"2014-05-15 06:54:13.000000000","message":"Why do you check only \u0027id\u0027? Why don\u0027t you check all another parameters?","commit_id":"d9a5fb49427e254538c463e3027fef3a355275b2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"f7ddc32bec3ae8049392b6e8cd5d568454cae818","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            )"},{"line_number":95,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":96,"context_line":"            self.assertEqual(rule_create_body[\u0027security_group_rule\u0027][\u0027id\u0027],"},{"line_number":97,"context_line":"                             show_rule_body[\u0027security_group_rule\u0027][\u0027id\u0027])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            # List rules and verify created rule is in response"},{"line_number":100,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_d7b24605","line":97,"in_reply_to":"7adec928_b4ce982c","updated":"2014-05-15 08:28:49.000000000","message":"IMHO the Bug is about fixing the existing code to validate the other protocols and not just icmp. Doing other changes as part of the fix may not be well received by some reviewers. So I did not include other changes in my patch.  \n\nAnyway, since I\u0027m now validating the security_group_rule id, I can validate the other params as well. Updated patch on the way. Thanks for the review comments.","commit_id":"d9a5fb49427e254538c463e3027fef3a355275b2"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"388b23c21698c6ada5418c1045aa2d93585a4361","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            self.assertEqual(protocol,"},{"line_number":101,"context_line":"                             show_rule_body[\u0027security_group_rule\u0027][\u0027protocol\u0027])"},{"line_number":102,"context_line":"            sg_id \u003d show_rule_body[\u0027security_group_rule\u0027][\u0027security_group_id\u0027]"},{"line_number":103,"context_line":"            self.assertEqual(group_create_body[\u0027security_group\u0027][\u0027id\u0027], sg_id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            # List rules and verify created rule is in response"},{"line_number":106,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_d78166c4","line":103,"updated":"2014-05-15 08:47:21.000000000","message":"Great! but may be do it in this way?\n\n     for key, value in rule_create_body[\u0027security_group_rule\u0027]:\n           self.assertEqual(value, show_rule_body[\u0027security_group_rule\u0027][key])\n\nThis is just a suggestion.","commit_id":"eee43fd54ffbffcd900e8454873849409891b9ac"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"df907a0f0d9421492ecd530be7899f77cee81609","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            self.assertEqual(protocol,"},{"line_number":101,"context_line":"                             show_rule_body[\u0027security_group_rule\u0027][\u0027protocol\u0027])"},{"line_number":102,"context_line":"            sg_id \u003d show_rule_body[\u0027security_group_rule\u0027][\u0027security_group_id\u0027]"},{"line_number":103,"context_line":"            self.assertEqual(group_create_body[\u0027security_group\u0027][\u0027id\u0027], sg_id)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            # List rules and verify created rule is in response"},{"line_number":106,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_226fa62c","line":103,"in_reply_to":"7adec928_d78166c4","updated":"2014-05-15 09:53:27.000000000","message":"Its a Good suggestion Ann. Thank you.","commit_id":"eee43fd54ffbffcd900e8454873849409891b9ac"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4f26c0ca901873ec35b477718528ec431f2e0370","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            )"},{"line_number":97,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":98,"context_line":"            create_dict \u003d rule_create_body[\u0027security_group_rule\u0027]"},{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key])"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_227966c8","line":99,"updated":"2014-05-15 10:12:57.000000000","message":"Oh, sorry this is my mistake. You won\u0027t need to use six. Dictionary has iteritems() itself. Use just create_dict.iteritems()","commit_id":"6e4dde9e045ceeece2a98f28e8aef027cc26da25"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"856f74659b843435be6e12a0221fbc8f7fc26531","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            )"},{"line_number":97,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":98,"context_line":"            create_dict \u003d rule_create_body[\u0027security_group_rule\u0027]"},{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key])"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_bda83b8e","line":99,"in_reply_to":"7adec928_227966c8","updated":"2014-05-15 10:50:17.000000000","message":"No problem Ann. \n\nI\u0027m using six for python3 compatibility.  \nReference:\nhttps://wiki.openstack.org/wiki/Python3\nReplace dict.iteritems() with six.iteritems(dict)","commit_id":"6e4dde9e045ceeece2a98f28e8aef027cc26da25"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"282f67c56ec3283959d004486eabfc24b5f9b819","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            )"},{"line_number":97,"context_line":"            self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":98,"context_line":"            create_dict \u003d rule_create_body[\u0027security_group_rule\u0027]"},{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key])"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_7dbf93aa","line":99,"in_reply_to":"7adec928_bda83b8e","updated":"2014-05-15 11:05:47.000000000","message":"I see :) OK.","commit_id":"6e4dde9e045ceeece2a98f28e8aef027cc26da25"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"0da335bf0238b430688d6189d9681015e5550a7d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            create_dict \u003d rule_create_body[\u0027security_group_rule\u0027]"},{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            # List rules and verify created rule is in response"},{"line_number":104,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_dc15f4e5","line":101,"updated":"2014-05-16 14:59:24.000000000","message":"So I feel like if this fails it will be hard to diagnose why. Especially because of the loop. Can you please add a failure comment to the assert explaining what happened.\n\nAlso I wouild assert that the keys are in the body dict before you start validating the values are the same.","commit_id":"6e4dde9e045ceeece2a98f28e8aef027cc26da25"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"980bf42f925e4a6bdfec2c17ab327fa06f610685","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            create_dict \u003d rule_create_body[\u0027security_group_rule\u0027]"},{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            # List rules and verify created rule is in response"},{"line_number":104,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_a6b72af4","line":101,"in_reply_to":"7adec928_dc15f4e5","updated":"2014-05-17 15:51:47.000000000","message":"Matthew, I\u0027ll update the patch to provide some explanation on the failure. \nIf there is an error, the message would be as shown below (simulated by hardcoding the values)\nMismatchError: u\u0027IPv4\u0027 !\u003d u\u0027IPv6\u0027: ethertype does not match.\n\nReg\u0027 the other comment on asserting the keys. \nIMHO possibility for the occurrence is rare and validating to such extent could be an overkill. If the key is not found, it would raise KeyError along with the name of the key anyway. Hope you understand. Thanks.","commit_id":"6e4dde9e045ceeece2a98f28e8aef027cc26da25"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"71fca2c691eb7e897d61d3b2fccd83f92f237a1d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key],"},{"line_number":102,"context_line":"                                 \"%s does not match.\" % key)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # List rules and verify created rule is in response"},{"line_number":105,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_4a8aaf64","line":102,"updated":"2014-05-19 15:07:43.000000000","message":"This give little information. I\u0027d have written something like \u0027Field %key of created security group rule %id does not match with the security group rule just retrieved\u0027.\n\nPlus, if you assert that all keys from the security group rule creation are also in the response of the security group show, you prevent a situation where a key would just disappear (not returned at all) from the security group show.\n\nBut we are not that exhaustive in Tempest, that\u0027s why i am fine with the current patch. Just wanted to elaborate on Matthew\u0027s comment.","commit_id":"4dbbc96d5ddc6b1ca4ed7689e7719163876e8a30"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"575f3c0a9d1348e2a37eef7366696d27341e7238","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key],"},{"line_number":102,"context_line":"                                 \"%s does not match.\" % key)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # List rules and verify created rule is in response"},{"line_number":105,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_cdf5f9ed","line":102,"in_reply_to":"7adec928_4a8aaf64","updated":"2014-05-19 15:36:39.000000000","message":"Thanks Jordan for your review comments. I\u0027m ok to change the error message if you want to. Please let me know. \n\nReg the assertion of the keys, I agree with your point. OTOH doing more changes than what is mentioned in the Bug report may not go well with  reviewers. So I was kind of thinking that asserting for keys can be taken up as a different patch as there are many places in tempest where such changes would be required.","commit_id":"4dbbc96d5ddc6b1ca4ed7689e7719163876e8a30"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cccbd71913b4956afb380693525993d660bbcc5c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            for key, value in six.iteritems(create_dict):"},{"line_number":100,"context_line":"                self.assertEqual(value,"},{"line_number":101,"context_line":"                                 show_rule_body[\u0027security_group_rule\u0027][key],"},{"line_number":102,"context_line":"                                 \"%s does not match.\" % key)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"            # List rules and verify created rule is in response"},{"line_number":105,"context_line":"            resp, rule_list_body \u003d self.client.list_security_group_rules()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_cd85f9cf","line":102,"in_reply_to":"7adec928_cdf5f9ed","updated":"2014-05-19 15:55:46.000000000","message":"Yeah yeah, I am okay with the patch as is. It was just some thoughts for a next time.","commit_id":"4dbbc96d5ddc6b1ca4ed7689e7719163876e8a30"}]}
