)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Positive tests for security group quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added positive tests for security group quota according to RHOSP7-3467"},{"line_number":10,"context_line":"polarion test case"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I833e5d5e67ef7555c9e6a54613b7324310079b0b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_7cfc810c","line":10,"range":{"start_line":9,"start_character":59,"end_line":10,"end_character":8},"updated":"2020-01-07 15:13:53.000000000","message":"Should remove downstream information since noone upstream will know what this means","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Positive tests for security group quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added positive tests for security group quota according to RHOSP7-3467"},{"line_number":10,"context_line":"polarion test case"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I833e5d5e67ef7555c9e6a54613b7324310079b0b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_326aa5eb","line":10,"range":{"start_line":9,"start_character":59,"end_line":10,"end_character":8},"in_reply_to":"3fa7e38b_7cfc810c","updated":"2020-01-08 10:43:19.000000000","message":"Done","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9a9657874b5437fb67c5c8121ca12a423f8ce5e9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Positive tests for security group quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. Test supported values for securiyt group quota"},{"line_number":10,"context_line":"2. Test creating maximum allowed amount of security groups"},{"line_number":11,"context_line":"3. Test creating maximum allowed amount of security groups if"},{"line_number":12,"context_line":"quota is increased"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3fa7e38b_868e4d31","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":37},"updated":"2020-01-15 21:09:51.000000000","message":"s/security","commit_id":"426c909aab1a9954a71b5bba12ba1336029d8c8a"}],"neutron_tempest_plugin/api/test_security_groups.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"class SecGroupQuotaTest(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":97,"context_line":"    required_extensions \u003d [\u0027security-group\u0027]"},{"line_number":98,"context_line":"    default_quota \u003d 10"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @decorators.idempotent_id(\u0027b3df266d-313e-4f31-83dc-370b437022e5\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_fccdd12e","line":97,"updated":"2020-01-07 15:13:53.000000000","message":"Do you also need the quotas extension?","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"class SecGroupQuotaTest(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":97,"context_line":"    required_extensions \u003d [\u0027security-group\u0027]"},{"line_number":98,"context_line":"    default_quota \u003d 10"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @decorators.idempotent_id(\u0027b3df266d-313e-4f31-83dc-370b437022e5\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_92f7d95a","line":97,"in_reply_to":"3fa7e38b_fccdd12e","updated":"2020-01-08 10:43:19.000000000","message":"Done","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":129,"context_line":"        self.assertEqual(self._get_sg_quota(), new_quota,"},{"line_number":130,"context_line":"                \"Security group quota was not changed correctly\")"},{"line_number":131,"context_line":"        self.assertEqual(self._get_sg_quota(), self._get_sg_amount(),"},{"line_number":132,"context_line":"                \"Amount of security groups doesn\u0027t match quota\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @decorators.idempotent_id(\u0027ba95676c-8d9a-4482-b4ec-74d51a4602a6\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7c2321bc","line":131,"range":{"start_line":131,"start_character":25,"end_line":131,"end_character":45},"updated":"2020-01-07 15:13:53.000000000","message":"nit: could save self._get_sg_quota() to a local since it\u0027s used twice in a row.","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":129,"context_line":"        self.assertEqual(self._get_sg_quota(), new_quota,"},{"line_number":130,"context_line":"                \"Security group quota was not changed correctly\")"},{"line_number":131,"context_line":"        self.assertEqual(self._get_sg_quota(), self._get_sg_amount(),"},{"line_number":132,"context_line":"                \"Amount of security groups doesn\u0027t match quota\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @decorators.idempotent_id(\u0027ba95676c-8d9a-4482-b4ec-74d51a4602a6\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7296ddf1","line":131,"range":{"start_line":131,"start_character":25,"end_line":131,"end_character":45},"in_reply_to":"3fa7e38b_7c2321bc","updated":"2020-01-08 10:43:19.000000000","message":"Done","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self._set_sg_quota(-1)"},{"line_number":144,"context_line":"        self._create_several_security_groups(self.default_quota)"},{"line_number":145,"context_line":"        new_sg_amount \u003d self._get_sg_amount()"},{"line_number":146,"context_line":"        self.assertTrue(new_sg_amount \u003e sg_amount)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":149,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bc20b9f9","line":146,"updated":"2020-01-07 15:13:53.000000000","message":"Should use assertGreater(new_sg_amount, sg_amount)","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self._set_sg_quota(-1)"},{"line_number":144,"context_line":"        self._create_several_security_groups(self.default_quota)"},{"line_number":145,"context_line":"        new_sg_amount \u003d self._get_sg_amount()"},{"line_number":146,"context_line":"        self.assertTrue(new_sg_amount \u003e sg_amount)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":149,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1299a91c","line":146,"in_reply_to":"3fa7e38b_bc20b9f9","updated":"2020-01-08 10:43:19.000000000","message":"Done","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":173,"context_line":"        project_id \u003d self.client.tenant_id"},{"line_number":174,"context_line":"        quota_client \u003d self.os_admin.network.QuotasClient()"},{"line_number":175,"context_line":"        quota_client.update_quotas(project_id, **{\u0027security_group\u0027: val})"},{"line_number":176,"context_line":"        self.addCleanup(quota_client.update_quotas,"},{"line_number":177,"context_line":"                project_id,"},{"line_number":178,"context_line":"                **{\u0027security_group\u0027: sg_quota})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_dcca5517","line":175,"updated":"2020-01-07 15:13:53.000000000","message":"Can you do this directly?\n\nself.admin_client.update_quotas(project_id, ...)\n\nThat\u0027s what api/admin/test_quotas.py does, might apply elsewhere in these tests.","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":173,"context_line":"        project_id \u003d self.client.tenant_id"},{"line_number":174,"context_line":"        quota_client \u003d self.os_admin.network.QuotasClient()"},{"line_number":175,"context_line":"        quota_client.update_quotas(project_id, **{\u0027security_group\u0027: val})"},{"line_number":176,"context_line":"        self.addCleanup(quota_client.update_quotas,"},{"line_number":177,"context_line":"                project_id,"},{"line_number":178,"context_line":"                **{\u0027security_group\u0027: sg_quota})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_12b20997","line":175,"in_reply_to":"3fa7e38b_dcca5517","updated":"2020-01-08 10:43:19.000000000","message":"Changed this kind of behavior in all methods","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cb593d2eba5c0be51ce7b4915546992f7aca9e1e","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_sg_amount(self):"},{"line_number":186,"context_line":"        sg_client \u003d self.os_primary.network.SecurityGroupsClient()"},{"line_number":187,"context_line":"        security_groups \u003d sg_client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":188,"context_line":"        return len(security_groups)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_dc66d528","line":187,"updated":"2020-01-07 15:13:53.000000000","message":"Not sure if inhertance works here:\n\nsecurity_groups \u003d self.client.list_security_groups()...","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"003904b0d6edd5453138a6e09a42b3268a46f3d8","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_sg_amount(self):"},{"line_number":186,"context_line":"        sg_client \u003d self.os_primary.network.SecurityGroupsClient()"},{"line_number":187,"context_line":"        security_groups \u003d sg_client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":188,"context_line":"        return len(security_groups)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_92a5994a","line":187,"in_reply_to":"3fa7e38b_dc66d528","updated":"2020-01-08 10:43:19.000000000","message":"Changed it to use \u0027self.client\u0027 instead.","commit_id":"00bc5fdb6c1d95b3882f83fb30643705dfe808e4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"569e46fdb43db30298d836e9ec9d559bbce96aa8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.assertIsNotNone(secgrp[\u0027id\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class SecGroupQuotaMethods(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_ead063c9","line":94,"updated":"2020-01-12 10:16:29.000000000","message":"do we really need additional class for those helper methods?","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e1178ba51a99001be3ae26b65e9fa740dc1c1f4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.assertIsNotNone(secgrp[\u0027id\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class SecGroupQuotaMethods(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_99f6e75e","line":94,"in_reply_to":"3fa7e38b_8a00cf05","updated":"2020-01-13 09:34:51.000000000","message":"ok, that makes sens. You can maybe think about changing name of this class to something like \"BaseSecGroupQuota\" but that\u0027s just a nit.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"045f7113f161d5bc4d182465a7b967aeccbba78f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.assertIsNotNone(secgrp[\u0027id\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class SecGroupQuotaMethods(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_ab2eea8a","line":94,"in_reply_to":"3fa7e38b_99f6e75e","updated":"2020-01-13 09:47:58.000000000","message":"You\u0027re right. It will match the style of other base classes naming.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"a437f259d6aeb52fd8a2f65073f5190c00e5f58d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.assertIsNotNone(secgrp[\u0027id\u0027])"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"class SecGroupQuotaMethods(base.BaseAdminNetworkTest):"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def _create_max_allowed_sg_amount(self):"},{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_8a00cf05","line":94,"in_reply_to":"3fa7e38b_ead063c9","updated":"2020-01-12 12:47:45.000000000","message":"I want to keep it in separate class to be used in negative tests and tests for security group rules. I will send them in separate commit to keep the commits small enough","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"569e46fdb43db30298d836e9ec9d559bbce96aa8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"},{"line_number":98,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":99,"context_line":"        sg_to_create \u003d sg_quota - sg_amount"},{"line_number":100,"context_line":"        self._create_several_security_groups(sg_to_create)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_cad327d4","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":28},"updated":"2020-01-12 10:16:29.000000000","message":"nit: I don\u0027t think that this is needed, \"_create_security_groups\" would be IMHO enough.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"05f0fe8d4dd630ac6502502cd28c930efa1a29ef","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"},{"line_number":98,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":99,"context_line":"        sg_to_create \u003d sg_quota - sg_amount"},{"line_number":100,"context_line":"        self._create_several_security_groups(sg_to_create)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3dea1577","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":28},"in_reply_to":"3fa7e38b_0b329ef4","updated":"2020-01-15 08:29:04.000000000","message":"Yes, my comment was only about renaming this method :) Sorry for not being clear enough.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"045f7113f161d5bc4d182465a7b967aeccbba78f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"},{"line_number":98,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":99,"context_line":"        sg_to_create \u003d sg_quota - sg_amount"},{"line_number":100,"context_line":"        self._create_several_security_groups(sg_to_create)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0b329ef4","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":28},"in_reply_to":"3fa7e38b_1998b718","updated":"2020-01-13 09:47:58.000000000","message":"I think I didn\u0027t understand you in the beginning. Did you mean just to rename \"_create_several_security_groups\" method to \"_create_security_groups\"? I thought you asked me to delete \"_create_max_allowed_sg_amount\" method and to keep only \"_create_security_groups\".","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9e1178ba51a99001be3ae26b65e9fa740dc1c1f4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"},{"line_number":98,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":99,"context_line":"        sg_to_create \u003d sg_quota - sg_amount"},{"line_number":100,"context_line":"        self._create_several_security_groups(sg_to_create)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1998b718","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":28},"in_reply_to":"3fa7e38b_6d99edcd","updated":"2020-01-13 09:34:51.000000000","message":"yes, but still You can name it just \"_create_security_groups\" and still require parameter how many groups should be created.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"a437f259d6aeb52fd8a2f65073f5190c00e5f58d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        sg_amount \u003d self._get_sg_amount()"},{"line_number":98,"context_line":"        sg_quota \u003d self._get_sg_quota()"},{"line_number":99,"context_line":"        sg_to_create \u003d sg_quota - sg_amount"},{"line_number":100,"context_line":"        self._create_several_security_groups(sg_to_create)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_6d99edcd","line":100,"range":{"start_line":100,"start_character":21,"end_line":100,"end_character":28},"in_reply_to":"3fa7e38b_cad327d4","updated":"2020-01-12 12:47:45.000000000","message":"As I\u0027m executing this method 3 times and will also use it for negative tests and security group rule tests","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5980e7f1abfeb1c551823c42a303812afcd24cea","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"},{"line_number":104,"context_line":"            sg \u003d self.create_security_group()"},{"line_number":105,"context_line":"            self.addCleanup(self.delete_security_group, sg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _increase_sg_quota(self):"},{"line_number":108,"context_line":"        sg_quota \u003d self._get_sg_quota()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_089b8e63","line":105,"updated":"2020-01-10 21:05:42.000000000","message":"Is this necessary as create_security_group() will add it to the class list and cleanup automatically.  Or maybe it\u0027s interfering with another test?","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"c4e25475d615495a801e065e2e94517b7685cb61","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def _create_several_security_groups(self, amount):"},{"line_number":103,"context_line":"        for _ in range(amount):"},{"line_number":104,"context_line":"            sg \u003d self.create_security_group()"},{"line_number":105,"context_line":"            self.addCleanup(self.delete_security_group, sg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _increase_sg_quota(self):"},{"line_number":108,"context_line":"        sg_quota \u003d self._get_sg_quota()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_8afbefbd","line":105,"in_reply_to":"3fa7e38b_089b8e63","updated":"2020-01-12 05:58:56.000000000","message":"The issue here is that I need to remove groups after the test but not the entire class","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5980e7f1abfeb1c551823c42a303812afcd24cea","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    @decorators.idempotent_id(\u0027df7981fb-b83a-4779-b13e-65494ef44a72\u0027)"},{"line_number":150,"context_line":"    def test_max_allowed_sg_amount(self):"},{"line_number":151,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":152,"context_line":"        self.assertEqual(self._get_sg_quota(), self._get_sg_amount())"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @decorators.idempotent_id(\u0027623d909c-6ef8-43d6-93ee-97086e2651e8\u0027)"},{"line_number":155,"context_line":"    def test_sg_quota_increased(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_68da421d","line":152,"updated":"2020-01-10 21:05:42.000000000","message":"Is there already a test for creating quota+1 and verifying it failed?","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"c4e25475d615495a801e065e2e94517b7685cb61","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    @decorators.idempotent_id(\u0027df7981fb-b83a-4779-b13e-65494ef44a72\u0027)"},{"line_number":150,"context_line":"    def test_max_allowed_sg_amount(self):"},{"line_number":151,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":152,"context_line":"        self.assertEqual(self._get_sg_quota(), self._get_sg_amount())"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @decorators.idempotent_id(\u0027623d909c-6ef8-43d6-93ee-97086e2651e8\u0027)"},{"line_number":155,"context_line":"    def test_sg_quota_increased(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_aaf82bc1","line":152,"in_reply_to":"3fa7e38b_68da421d","updated":"2020-01-12 05:58:56.000000000","message":"There is such test in \"neutron_tempest_plugin/api/admin/test_quotas_negative.py\" but it sets quota to the value that is equal to the amount of already created security groups. So it doesn\u0027t check if we can create the maximum allowed amount of security groups. Anyway I think that it will be better to have a separate test just for positive verification.","commit_id":"67539f5dc0707d5a96024614287fa38e09984389"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d96a980e03e1a0f298aa93bfa4709f5c65bf324b","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @decorators.idempotent_id(\u00271826aa02-090d-4717-b43a-50ee449b02e7\u0027)"},{"line_number":145,"context_line":"    def test_sg_quota_values(self):"},{"line_number":146,"context_line":"        values \u003d [-1, 0, 10, 2147483647]"},{"line_number":147,"context_line":"        for value in values:"},{"line_number":148,"context_line":"            self._set_sg_quota(value)"},{"line_number":149,"context_line":"            self.assertEqual(value, self._get_sg_quota())"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d06fbf90","line":146,"range":{"start_line":146,"start_character":29,"end_line":146,"end_character":39},"updated":"2020-01-22 10:25:30.000000000","message":"nit: 2**31 - 1","commit_id":"426c909aab1a9954a71b5bba12ba1336029d8c8a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d96a980e03e1a0f298aa93bfa4709f5c65bf324b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":161,"context_line":"        quota_set \u003d self._get_sg_quota()"},{"line_number":162,"context_line":"        self.assertEqual(quota_set, new_quota,"},{"line_number":163,"context_line":"                \"Security group quota was not changed correctly\")"},{"line_number":164,"context_line":"        self.assertEqual(quota_set, self._get_sg_amount(),"},{"line_number":165,"context_line":"                \"Amount of security groups doesn\u0027t match quota\")"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_50018fb4","line":163,"updated":"2020-01-22 10:25:30.000000000","message":"nit: weird indentation\nnit: this should be tested before adding resources to the quota","commit_id":"426c909aab1a9954a71b5bba12ba1336029d8c8a"},{"author":{"_account_id":31450,"name":"Alex Katz","email":"akatz@redhat.com","username":"akatz"},"change_message_id":"d89d7f5ad4632b2888dd37d1804a8e79235b4a55","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        self._create_max_allowed_sg_amount()"},{"line_number":161,"context_line":"        quota_set \u003d self._get_sg_quota()"},{"line_number":162,"context_line":"        self.assertEqual(quota_set, new_quota,"},{"line_number":163,"context_line":"                \"Security group quota was not changed correctly\")"},{"line_number":164,"context_line":"        self.assertEqual(quota_set, self._get_sg_amount(),"},{"line_number":165,"context_line":"                \"Amount of security groups doesn\u0027t match quota\")"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_70904b43","line":163,"in_reply_to":"3fa7e38b_50018fb4","updated":"2020-01-22 10:37:04.000000000","message":"\u0027test_sg_quota_values\u0027 covers this scenario. I just want to have correct error message here in case it will fail.","commit_id":"426c909aab1a9954a71b5bba12ba1336029d8c8a"}]}
