)]}'
{"neutron/tests/tempest/api/admin/test_quotas.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9a906b7d0392e8ecf25227108c2736084924ae94","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        for key, value in six.iteritems(new_quotas):"},{"line_number":98,"context_line":"            self.assertEqual(value, quota_set[key])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Reset quotas to default and confirm"},{"line_number":101,"context_line":"        self.admin_client.reset_quotas(tenant_id)"},{"line_number":102,"context_line":"        non_default_quotas \u003d self.admin_client.list_quotas()"},{"line_number":103,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_6f4b4d2c","line":100,"updated":"2016-05-13 08:49:54.000000000","message":"How about adding a test for quota-defaults?","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"d8d2417124324d87756d50fc9e850dd2c51756c6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        for key, value in six.iteritems(new_quotas):"},{"line_number":98,"context_line":"            self.assertEqual(value, quota_set[key])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Reset quotas to default and confirm"},{"line_number":101,"context_line":"        self.admin_client.reset_quotas(tenant_id)"},{"line_number":102,"context_line":"        non_default_quotas \u003d self.admin_client.list_quotas()"},{"line_number":103,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_c3000d37","line":100,"in_reply_to":"dab17558_6f4b4d2c","updated":"2016-05-16 07:55:58.000000000","message":"Sorry to bother you. Please tell me about a meaning of your comment.\nDoes it mean that to make resources to the upper limit of a default rather than setting the quota for an independent tenant ?","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"e2120f85b9e296e7c307128aa63943471f08b118","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        for key, value in six.iteritems(new_quotas):"},{"line_number":98,"context_line":"            self.assertEqual(value, quota_set[key])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Reset quotas to default and confirm"},{"line_number":101,"context_line":"        self.admin_client.reset_quotas(tenant_id)"},{"line_number":102,"context_line":"        non_default_quotas \u003d self.admin_client.list_quotas()"},{"line_number":103,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_de1e240b","line":100,"in_reply_to":"dab17558_c3000d37","updated":"2016-05-16 08:04:05.000000000","message":"We have a new API added for retrieving default quota values for all the resources per tenant.. You can check \"https://review.openstack.org/#/c/306200/\" for details and add related tests.. Hope this is clear..","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"e81337a355f71137b71308e7a264df4178dae9ce","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        for key, value in six.iteritems(new_quotas):"},{"line_number":98,"context_line":"            self.assertEqual(value, quota_set[key])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        # Reset quotas to default and confirm"},{"line_number":101,"context_line":"        self.admin_client.reset_quotas(tenant_id)"},{"line_number":102,"context_line":"        non_default_quotas \u003d self.admin_client.list_quotas()"},{"line_number":103,"context_line":"        for q in non_default_quotas[\u0027quotas\u0027]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_9145f6b4","line":100,"in_reply_to":"dab17558_de1e240b","updated":"2016-05-19 02:21:06.000000000","message":"I checked the above URL.\nA purpose of this patch is to make negative tests when the resource that is more than the upper limit was made.\nSo I think a GET API test should add not in this patch, but in different patch.","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"}],"neutron/tests/tempest/api/admin/test_quotas_negative.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"e1959f90cadb39cc77b4253d23e6a859efee11c1","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            sg_rule_list \u003d self.admin_client.list_security_group_rules("},{"line_number":134,"context_line":"                tenant_id\u003dself.tenant_id)[\u0027security_group_rules\u0027]"},{"line_number":135,"context_line":"            num \u003d len([sg_rule_list[n][\u0027id\u0027]"},{"line_number":136,"context_line":"                      for n in range(0, len(sg_rule_list))]) + 1"},{"line_number":137,"context_line":"        except lib_exc.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_b9c2e532","line":136,"updated":"2016-05-02 03:12:30.000000000","message":"how is it different from \"num \u003d len(sg_rule_list) + 1\" ?","commit_id":"a67dbcadeaacc5c00b365c0e17fd6292a77589a5"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"91d192dd98a4cbf91f9804b88a09df74c261a049","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            sg_rule_list \u003d self.admin_client.list_security_group_rules("},{"line_number":134,"context_line":"                tenant_id\u003dself.tenant_id)[\u0027security_group_rules\u0027]"},{"line_number":135,"context_line":"            num \u003d len([sg_rule_list[n][\u0027id\u0027]"},{"line_number":136,"context_line":"                      for n in range(0, len(sg_rule_list))]) + 1"},{"line_number":137,"context_line":"        except lib_exc.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_0a76af05","line":136,"in_reply_to":"1a122d0e_b9c2e532","updated":"2016-05-10 07:35:57.000000000","message":"Done","commit_id":"a67dbcadeaacc5c00b365c0e17fd6292a77589a5"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"33438d7bd5e1fe5882a693513153516bd0bc3eff","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def resource_setup(cls):"},{"line_number":28,"context_line":"        super(QuotasAdminNegativeTestJSON, cls).resource_setup()"},{"line_number":29,"context_line":"        # Add a tenant to conduct the test"},{"line_number":30,"context_line":"        test_tenant \u003d data_utils.rand_name(\u0027test_tenant_\u0027)"},{"line_number":31,"context_line":"        test_description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":32,"context_line":"        tenant \u003d cls.identity_admin_client.create_tenant("},{"line_number":33,"context_line":"            name\u003dtest_tenant,"},{"line_number":34,"context_line":"            description\u003dtest_description)[\u0027tenant\u0027]"},{"line_number":35,"context_line":"        cls.tenant_id \u003d tenant[\u0027id\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":38,"context_line":"    @test.idempotent_id(\u0027952f9b24-9156-4bdc-90f3-682a3d4302f0\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_11adcde8","line":35,"range":{"start_line":30,"start_character":8,"end_line":35,"end_character":36},"updated":"2016-05-12 06:08:41.000000000","message":"You should add addCleanaup() for tenant.","commit_id":"8ce7765c64da6273a766ca136d26d41996d26c7c"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"df8298c13b33e6b8e7332c2dc502479e4379723e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def resource_setup(cls):"},{"line_number":28,"context_line":"        super(QuotasAdminNegativeTestJSON, cls).resource_setup()"},{"line_number":29,"context_line":"        # Add a tenant to conduct the test"},{"line_number":30,"context_line":"        test_tenant \u003d data_utils.rand_name(\u0027test_tenant_\u0027)"},{"line_number":31,"context_line":"        test_description \u003d data_utils.rand_name(\u0027desc_\u0027)"},{"line_number":32,"context_line":"        tenant \u003d cls.identity_admin_client.create_tenant("},{"line_number":33,"context_line":"            name\u003dtest_tenant,"},{"line_number":34,"context_line":"            description\u003dtest_description)[\u0027tenant\u0027]"},{"line_number":35,"context_line":"        cls.tenant_id \u003d tenant[\u0027id\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":38,"context_line":"    @test.idempotent_id(\u0027952f9b24-9156-4bdc-90f3-682a3d4302f0\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_4eedb024","line":35,"range":{"start_line":30,"start_character":8,"end_line":35,"end_character":36},"in_reply_to":"dab17558_11adcde8","updated":"2016-05-13 07:13:06.000000000","message":"Done","commit_id":"8ce7765c64da6273a766ca136d26d41996d26c7c"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"bcea264d5741d12919afb7597bc71f135796cbfd","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":165,"context_line":"                          self.admin_client.create_floatingip, **fip_args)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _setup_quotas(self, resource, num):"},{"line_number":168,"context_line":"        new_quotas \u003d {resource: num}"},{"line_number":169,"context_line":"        # Change quotas for tenant"},{"line_number":170,"context_line":"        self.admin_client.update_quotas(self.tenant_id, **new_quotas)"},{"line_number":171,"context_line":"        self.addCleanup(self._cleanup_quotas, self.tenant_id)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _cleanup_quotas(self, project_id):"},{"line_number":174,"context_line":"        # Try to clean up the resources. If it fails, then"},{"line_number":175,"context_line":"        # assume that everything was already deleted, so"},{"line_number":176,"context_line":"        # it is OK to continue."},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            self.admin_client.reset_quotas(project_id)"},{"line_number":179,"context_line":"        except lib_exc.NotFound:"},{"line_number":180,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_b1284187","line":180,"range":{"start_line":167,"start_character":0,"end_line":180,"end_character":16},"updated":"2016-05-12 06:01:54.000000000","message":"We can share these codes with test_quotas. It\u0027s better to parepare BASE class with them in test_quotas.","commit_id":"8ce7765c64da6273a766ca136d26d41996d26c7c"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"df8298c13b33e6b8e7332c2dc502479e4379723e","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":165,"context_line":"                          self.admin_client.create_floatingip, **fip_args)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def _setup_quotas(self, resource, num):"},{"line_number":168,"context_line":"        new_quotas \u003d {resource: num}"},{"line_number":169,"context_line":"        # Change quotas for tenant"},{"line_number":170,"context_line":"        self.admin_client.update_quotas(self.tenant_id, **new_quotas)"},{"line_number":171,"context_line":"        self.addCleanup(self._cleanup_quotas, self.tenant_id)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _cleanup_quotas(self, project_id):"},{"line_number":174,"context_line":"        # Try to clean up the resources. If it fails, then"},{"line_number":175,"context_line":"        # assume that everything was already deleted, so"},{"line_number":176,"context_line":"        # it is OK to continue."},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            self.admin_client.reset_quotas(project_id)"},{"line_number":179,"context_line":"        except lib_exc.NotFound:"},{"line_number":180,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_0e8d687b","line":180,"range":{"start_line":167,"start_character":0,"end_line":180,"end_character":16},"in_reply_to":"dab17558_b1284187","updated":"2016-05-13 07:13:06.000000000","message":"Done","commit_id":"8ce7765c64da6273a766ca136d26d41996d26c7c"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"b4581f8b00e5a3cf5f2e3f567753e9f6e192f5da","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.addCleanup(self.admin_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":59,"context_line":"                          self.admin_client.create_subnet, **subnet_args)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":62,"context_line":"    @test.idempotent_id(\u0027fe20d9f9-346c-4a20-bbfa-d9ca390f4dc6\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_4c1bf71c","line":59,"range":{"start_line":59,"start_character":26,"end_line":59,"end_character":72},"updated":"2016-05-13 08:27:15.000000000","message":"This test returns 400 if quotas isn\u0027t set because subnet was created with the same cidr in L55. It\u0027s not related to a resut of the test but we should use correct request.","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"d8d2417124324d87756d50fc9e850dd2c51756c6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.addCleanup(self.admin_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":59,"context_line":"                          self.admin_client.create_subnet, **subnet_args)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":62,"context_line":"    @test.idempotent_id(\u0027fe20d9f9-346c-4a20-bbfa-d9ca390f4dc6\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_c33dad2c","line":59,"range":{"start_line":59,"start_character":26,"end_line":59,"end_character":72},"in_reply_to":"dab17558_4c1bf71c","updated":"2016-05-16 07:55:58.000000000","message":"Done","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"b4581f8b00e5a3cf5f2e3f567753e9f6e192f5da","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":149,"context_line":"                          self.admin_client.create_security_group_rule,"},{"line_number":150,"context_line":"                          **sg_rule_args)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":153,"context_line":"    @test.idempotent_id(\u0027d00fe5bb-9db8-4e1a-9c31-490f52897e6f\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_ec5d8bed","line":150,"range":{"start_line":150,"start_character":26,"end_line":150,"end_character":40},"updated":"2016-05-13 08:27:15.000000000","message":"This test tries to create the same as rule was created in L143 so we always get 409 even if quotas isn\u0027t set.","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"d8d2417124324d87756d50fc9e850dd2c51756c6","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":149,"context_line":"                          self.admin_client.create_security_group_rule,"},{"line_number":150,"context_line":"                          **sg_rule_args)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":153,"context_line":"    @test.idempotent_id(\u0027d00fe5bb-9db8-4e1a-9c31-490f52897e6f\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_234759bd","line":150,"range":{"start_line":150,"start_character":26,"end_line":150,"end_character":40},"in_reply_to":"dab17558_ec5d8bed","updated":"2016-05-16 07:55:58.000000000","message":"Done","commit_id":"da53a329275f2a6f860aea5da14d5822b9ee30c4"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"72942b668188fa2f9051d102ae7c908c34c05b28","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        subnet \u003d self.admin_client.create_subnet(**subnet_args)[\u0027subnet\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.admin_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        subnet_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":58,"context_line":"                       \u0027network_id\u0027: net[\u0027id\u0027],"},{"line_number":59,"context_line":"                       \u0027cidr\u0027: \u002710.1.0.0/24\u0027,"},{"line_number":60,"context_line":"                       \u0027ip_version\u0027: \u00274\u0027}"},{"line_number":61,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":62,"context_line":"                          self.admin_client.create_subnet, **subnet_args)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_c2fdee3b","line":60,"range":{"start_line":57,"start_character":8,"end_line":60,"end_character":41},"updated":"2016-05-19 05:30:17.000000000","message":"nit: this can be replaced just subnet_args[\u0027cidr\u0027] \u003d \u002710.1.0.0/24\u0027.","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fd05e0bcd1579bb622c61e1583c655d7706d3a4b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        subnet \u003d self.admin_client.create_subnet(**subnet_args)[\u0027subnet\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.admin_client.delete_subnet, subnet[\u0027id\u0027])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        subnet_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":58,"context_line":"                       \u0027network_id\u0027: net[\u0027id\u0027],"},{"line_number":59,"context_line":"                       \u0027cidr\u0027: \u002710.1.0.0/24\u0027,"},{"line_number":60,"context_line":"                       \u0027ip_version\u0027: \u00274\u0027}"},{"line_number":61,"context_line":"        self.assertRaises(lib_exc.Conflict,"},{"line_number":62,"context_line":"                          self.admin_client.create_subnet, **subnet_args)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_2d0a638a","line":60,"range":{"start_line":57,"start_character":8,"end_line":60,"end_character":41},"in_reply_to":"bab6814e_c2fdee3b","updated":"2016-05-23 08:13:21.000000000","message":"Done","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"72942b668188fa2f9051d102ae7c908c34c05b28","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":81,"context_line":"    @test.idempotent_id(\u0027bb1e9c3c-7e6f-41f1-b579-63dbc655ecb7\u0027)"},{"line_number":82,"context_line":"    def test_create_router_when_quotas_is_full(self):"},{"line_number":83,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":84,"context_line":"        new_quotas \u003d {\u0027router\u0027: 1}"},{"line_number":85,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_dd2e6ff9","line":82,"range":{"start_line":82,"start_character":4,"end_line":82,"end_character":53},"updated":"2016-05-19 05:30:17.000000000","message":"We need router extension to test it.","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fd05e0bcd1579bb622c61e1583c655d7706d3a4b","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":81,"context_line":"    @test.idempotent_id(\u0027bb1e9c3c-7e6f-41f1-b579-63dbc655ecb7\u0027)"},{"line_number":82,"context_line":"    def test_create_router_when_quotas_is_full(self):"},{"line_number":83,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":84,"context_line":"        new_quotas \u003d {\u0027router\u0027: 1}"},{"line_number":85,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_6d00eb66","line":82,"range":{"start_line":82,"start_character":4,"end_line":82,"end_character":53},"in_reply_to":"bab6814e_dd2e6ff9","updated":"2016-05-23 08:13:21.000000000","message":"Done","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"72942b668188fa2f9051d102ae7c908c34c05b28","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":98,"context_line":"    @test.idempotent_id(\u00275c924ff7-b7a9-474f-92a3-dbe0f976ec13\u0027)"},{"line_number":99,"context_line":"    def test_create_security_group_when_quotas_is_full(self):"},{"line_number":100,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":101,"context_line":"        sg_args \u003d {\u0027tenant_id\u0027: tenant_id}"},{"line_number":102,"context_line":"        # avoid a number that is made by default"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_5d3b9f38","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":61},"updated":"2016-05-19 05:30:17.000000000","message":"We need security group extension to test it.","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fd05e0bcd1579bb622c61e1583c655d7706d3a4b","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":98,"context_line":"    @test.idempotent_id(\u00275c924ff7-b7a9-474f-92a3-dbe0f976ec13\u0027)"},{"line_number":99,"context_line":"    def test_create_security_group_when_quotas_is_full(self):"},{"line_number":100,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":101,"context_line":"        sg_args \u003d {\u0027tenant_id\u0027: tenant_id}"},{"line_number":102,"context_line":"        # avoid a number that is made by default"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_cdfbd777","line":99,"range":{"start_line":99,"start_character":4,"end_line":99,"end_character":61},"in_reply_to":"bab6814e_5d3b9f38","updated":"2016-05-23 08:13:21.000000000","message":"Done","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"72942b668188fa2f9051d102ae7c908c34c05b28","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":122,"context_line":"    @test.idempotent_id(\u0027b7143480-6118-4ed4-be38-1b6f15f30d05\u0027)"},{"line_number":123,"context_line":"    def test_create_security_group_rule_when_quotas_is_full(self):"},{"line_number":124,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":125,"context_line":"        sg_args \u003d {\u0027tenant_id\u0027: tenant_id}"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_9d4507b5","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":66},"updated":"2016-05-19 05:30:17.000000000","message":"We need security group extension to test it.","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fd05e0bcd1579bb622c61e1583c655d7706d3a4b","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @test.attr(type\u003d\u0027negative\u0027)"},{"line_number":122,"context_line":"    @test.idempotent_id(\u0027b7143480-6118-4ed4-be38-1b6f15f30d05\u0027)"},{"line_number":123,"context_line":"    def test_create_security_group_rule_when_quotas_is_full(self):"},{"line_number":124,"context_line":"        tenant_id \u003d self._create_tenant()[\u0027id\u0027]"},{"line_number":125,"context_line":"        sg_args \u003d {\u0027tenant_id\u0027: tenant_id}"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_adf6538c","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":66},"in_reply_to":"bab6814e_9d4507b5","updated":"2016-05-23 08:13:21.000000000","message":"Done","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"72942b668188fa2f9051d102ae7c908c34c05b28","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        new_quotas \u003d {\u0027floatingip\u0027: 1}"},{"line_number":163,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        ext_net_id \u003d CONF.network.public_network_id"},{"line_number":166,"context_line":"        fip_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":167,"context_line":"                    \u0027floating_network_id\u0027: ext_net_id}"},{"line_number":168,"context_line":"        fip \u003d self.admin_client.create_floatingip(**fip_args)[\u0027floatingip\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_e23472fc","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":51},"updated":"2016-05-19 05:30:17.000000000","message":"Recently I saw a patch about this tempest configuration[1]. It means we need external-net extension to test it, doesn\u0027t it? At least, we need router extension.\n\n[1]: https://review.openstack.org/#/c/317754/","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"fd05e0bcd1579bb622c61e1583c655d7706d3a4b","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        new_quotas \u003d {\u0027floatingip\u0027: 1}"},{"line_number":163,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        ext_net_id \u003d CONF.network.public_network_id"},{"line_number":166,"context_line":"        fip_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":167,"context_line":"                    \u0027floating_network_id\u0027: ext_net_id}"},{"line_number":168,"context_line":"        fip \u003d self.admin_client.create_floatingip(**fip_args)[\u0027floatingip\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_1f185dd2","line":165,"range":{"start_line":165,"start_character":8,"end_line":165,"end_character":51},"in_reply_to":"bab6814e_e23472fc","updated":"2016-05-23 08:13:21.000000000","message":"I added requires_ext of router extension.","commit_id":"222c79567d9b91e163672919f92023515dd38875"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8fba4de53431606fb3fc6f611d87b8db4586a1ad","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        new_quotas \u003d {\u0027port\u0027: 1}"},{"line_number":66,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        ext_net_id \u003d CONF.network.public_network_id"},{"line_number":69,"context_line":"        port_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":70,"context_line":"                     \u0027network_id\u0027: ext_net_id}"},{"line_number":71,"context_line":"        port \u003d self.admin_client.create_port(**port_args)[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_d16b691c","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":51},"updated":"2016-05-23 08:34:44.000000000","message":"It sounds a bit odd to use an external network to test port quotas of regular projects. In a usual setup, a regular project cannot create a port on an external network. How about creating a network for a tenant?","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"718a9fc29b61c98fed805ffb0e355da0918ce2e0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        new_quotas \u003d {\u0027port\u0027: 1}"},{"line_number":66,"context_line":"        self._setup_quotas(tenant_id, **new_quotas)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        ext_net_id \u003d CONF.network.public_network_id"},{"line_number":69,"context_line":"        port_args \u003d {\u0027tenant_id\u0027: tenant_id,"},{"line_number":70,"context_line":"                     \u0027network_id\u0027: ext_net_id}"},{"line_number":71,"context_line":"        port \u003d self.admin_client.create_port(**port_args)[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_347e1c6a","line":68,"range":{"start_line":68,"start_character":8,"end_line":68,"end_character":51},"in_reply_to":"bab6814e_d16b691c","updated":"2016-05-23 10:46:10.000000000","message":"Done","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8fba4de53431606fb3fc6f611d87b8db4586a1ad","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            sg_list \u003d self.admin_client.list_security_groups("},{"line_number":104,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_groups\u0027]"},{"line_number":105,"context_line":"            num \u003d len([sg_list[n][\u0027id\u0027]"},{"line_number":106,"context_line":"                      for n in range(0, len(sg_list))]) + 1"},{"line_number":107,"context_line":"        except lib_exc.NotFound:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_f175cd63","line":106,"range":{"start_line":105,"start_character":18,"end_line":106,"end_character":59},"updated":"2016-05-23 08:34:44.000000000","message":"This can be:\n\n  len(sg_list) + 1","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"718a9fc29b61c98fed805ffb0e355da0918ce2e0","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            sg_list \u003d self.admin_client.list_security_groups("},{"line_number":104,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_groups\u0027]"},{"line_number":105,"context_line":"            num \u003d len([sg_list[n][\u0027id\u0027]"},{"line_number":106,"context_line":"                      for n in range(0, len(sg_list))]) + 1"},{"line_number":107,"context_line":"        except lib_exc.NotFound:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_54af607c","line":106,"range":{"start_line":105,"start_character":18,"end_line":106,"end_character":59},"in_reply_to":"bab6814e_f175cd63","updated":"2016-05-23 10:46:10.000000000","message":"Done","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8fba4de53431606fb3fc6f611d87b8db4586a1ad","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_groups\u0027]"},{"line_number":105,"context_line":"            num \u003d len([sg_list[n][\u0027id\u0027]"},{"line_number":106,"context_line":"                      for n in range(0, len(sg_list))]) + 1"},{"line_number":107,"context_line":"        except lib_exc.NotFound:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        new_quotas \u003d {\u0027security_group\u0027: num}"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_f1fcadb9","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":32},"updated":"2016-05-23 08:34:44.000000000","message":"When is this exception raised?","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"718a9fc29b61c98fed805ffb0e355da0918ce2e0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_groups\u0027]"},{"line_number":105,"context_line":"            num \u003d len([sg_list[n][\u0027id\u0027]"},{"line_number":106,"context_line":"                      for n in range(0, len(sg_list))]) + 1"},{"line_number":107,"context_line":"        except lib_exc.NotFound:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        new_quotas \u003d {\u0027security_group\u0027: num}"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_d4da3016","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":32},"in_reply_to":"bab6814e_f1fcadb9","updated":"2016-05-23 10:46:10.000000000","message":"It is unnecessary. I deleted it.","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8fba4de53431606fb3fc6f611d87b8db4586a1ad","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            sg_rule_list \u003d self.admin_client.list_security_group_rules("},{"line_number":135,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_group_rules\u0027]"},{"line_number":136,"context_line":"            num \u003d len(sg_rule_list) + 1"},{"line_number":137,"context_line":"        except lib_exc.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        new_quotas \u003d {\u0027security_group_rule\u0027: num}"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_11ecd1f1","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":32},"updated":"2016-05-23 08:34:44.000000000","message":"I think list_security_group_rules does not raise NotFound error. Is it needed?","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"},{"author":{"_account_id":11704,"name":"Maho Koshiya","email":"koshiya.maho@po.ntt-tx.co.jp","username":"koshi-m"},"change_message_id":"718a9fc29b61c98fed805ffb0e355da0918ce2e0","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            sg_rule_list \u003d self.admin_client.list_security_group_rules("},{"line_number":135,"context_line":"                tenant_id\u003dtenant_id)[\u0027security_group_rules\u0027]"},{"line_number":136,"context_line":"            num \u003d len(sg_rule_list) + 1"},{"line_number":137,"context_line":"        except lib_exc.NotFound:"},{"line_number":138,"context_line":"            pass"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        new_quotas \u003d {\u0027security_group_rule\u0027: num}"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_14079882","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":32},"in_reply_to":"bab6814e_11ecd1f1","updated":"2016-05-23 10:46:10.000000000","message":"It is unnecessary. I deleted it.","commit_id":"b2aa03264666a0665713684f2c88ab925451621f"}]}
