)]}'
{"releasenotes/notes/tenant_usage_schema-55e7421bf39ba991.yaml":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"89f77f69646d8914c3609df0c30b69293dae7793","unresolved":false,"context_lines":[{"line_number":1,"context_line":"fixes:"},{"line_number":2,"context_line":"  - |"},{"line_number":3,"context_line":"    Fixes the simple tenant usage validation schema. It previously incorrectly "},{"line_number":4,"context_line":"    assumed that empty responses are invalid."},{"line_number":5,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"5ff73747_b23ba1e9","line":3,"range":{"start_line":3,"start_character":78,"end_line":3,"end_character":79},"updated":"2017-04-25 16:06:10.000000000","message":"Trailing whitespace, but I don\u0027t think it really matters for release notes.","commit_id":"177c437cc02a05e96084e5cadf0a9c2a62e33da1"}],"tempest/api/compute/admin/test_simple_tenant_usage.py":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"ef313a5264cd09238d971ff095b26222ada71ec7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"VALID_WAIT \u003d 30"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TenantUsagesParentTestJSON(base.BaseV2ComputeAdminTest):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_b6fc04b9","line":30,"range":{"start_line":30,"start_character":18,"end_line":30,"end_character":24},"updated":"2017-03-22 17:57:09.000000000","message":"nit: a quick grep of the tempest source seems to indicate that they probably prefer \"Base\" over \"Parent\" and probably as a prefix. Perhaps \"BaseTenantUsagesTest\"?","commit_id":"eed5c26c64f89dd4cac417529d46dfdc5188acb7"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"8c55c05033ec637d0a9a9f598258b60f6170a144","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        tenant_usage \u003d tenant_usages[\u0027tenant_usages\u0027][0]"},{"line_number":118,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9912-4249-3b51-e3ad664e926f\u0027)"},{"line_number":121,"context_line":"    def test_list_usage_tenant_paginated_marker(self):"},{"line_number":122,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":123,"context_line":"            self.adm_client.list_tenant_usages, VALID_WAIT,"},{"line_number":124,"context_line":"            limit\u003d\"1\", detailed\u003d\"1\")"},{"line_number":125,"context_line":"        self.assertIn(\u0027tenant_usages_links\u0027, tenant_usages,"},{"line_number":126,"context_line":"                      \"Invalid response %s\" % tenant_usages)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Retrieve the parameters for the following request."},{"line_number":129,"context_line":"        next_href \u003d tenant_usages[\u0027tenant_usages_links\u0027][0][\u0027href\u0027]"},{"line_number":130,"context_line":"        params \u003d dict(urlparse.parse_qsl(urlparse.urlparse(next_href).query))"},{"line_number":131,"context_line":"        self.assertIn(\u0027marker\u0027, params)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":134,"context_line":"            self.adm_client.list_tenant_usages, VALID_WAIT, **params)"},{"line_number":135,"context_line":"        tenant_usage \u003d tenant_usages[\u0027tenant_usages\u0027][0]"},{"line_number":136,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9912-4249-8b51-e3ad664e926e\u0027)"},{"line_number":139,"context_line":"    def test_get_usage_tenant_paginated(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_b3e0962a","line":136,"range":{"start_line":120,"start_character":0,"end_line":136,"end_character":63},"updated":"2017-03-22 17:36:17.000000000","message":"Thoughts on changing this to the following (as discussed on IRC)?\n\n- http://paste.openstack.org/show/603801/\n\nIt would require this change too (schema fix for the empty response case):\n\n- http://paste.openstack.org/show/603800/\n\nAnd \u0027num_servers\u0027 added:\n\n    min_microversion \u003d \"2.40\"\n    max_microversion \u003d \"latest\"\n    num_servers \u003d 3","commit_id":"eed5c26c64f89dd4cac417529d46dfdc5188acb7"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"8c55c05033ec637d0a9a9f598258b60f6170a144","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            limit\u003d\"1\", detailed\u003d\"1\")[\u0027tenant_usage\u0027]"},{"line_number":143,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9612-4249-3b51-e3ad664e926f\u0027)"},{"line_number":146,"context_line":"    def test_get_usage_tenant_paginated_marker(self):"},{"line_number":147,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":148,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":149,"context_line":"            self.tenant_id, limit\u003d\"1\", detailed\u003d\"1\")"},{"line_number":150,"context_line":"        self.assertIn(\u0027tenant_usage_links\u0027, tenant_usages,"},{"line_number":151,"context_line":"                      \"Invalid response %s\" % tenant_usages)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        # Retrieve the parameters for the following request."},{"line_number":154,"context_line":"        next_href \u003d tenant_usages[\u0027tenant_usage_links\u0027][0][\u0027href\u0027]"},{"line_number":155,"context_line":"        params \u003d dict(urlparse.parse_qsl(urlparse.urlparse(next_href).query))"},{"line_number":156,"context_line":"        self.assertIn(\u0027marker\u0027, params)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":159,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":160,"context_line":"            self.tenant_id, **params)"},{"line_number":161,"context_line":"        self.assertEqual(len(tenant_usage[\u0027tenant_usage\u0027][\u0027server_usages\u0027]), 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_f354ceca","line":161,"range":{"start_line":145,"start_character":0,"end_line":161,"end_character":79},"updated":"2017-03-22 17:36:17.000000000","message":"Thoughts on changing this to the following (as discussed on IRC)?\n\n- http://paste.openstack.org/show/603802/\n\nIt would require this change too (schema fix for the empty response case):\n\n- http://paste.openstack.org/show/603800/\n\nAnd \u0027num_servers\u0027 added:\n\n    min_microversion \u003d \"2.40\"\n    max_microversion \u003d \"latest\"\n    num_servers \u003d 3","commit_id":"eed5c26c64f89dd4cac417529d46dfdc5188acb7"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"c3ff046bbe26d89b3f4436871f098020100b85a0","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @decorators.idempotent_id(\u00270f2b059c-b74c-4f12-bc0e-99b7ae6c56ac\u0027)"},{"line_number":102,"context_line":"    def test_list_usage_empty(self):"},{"line_number":103,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":104,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":105,"context_line":"            self.alt_client.tenant_id, detailed\u003d\"1\")[\u0027tenant_usage\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_ec075a16","line":102,"range":{"start_line":102,"start_character":13,"end_line":102,"end_character":17},"updated":"2017-03-23 17:53:00.000000000","message":"\u0027get\u0027, not \u0027list\u0027 because this is calling \u0027show_tenant_usage\u0027, not \u0027list_tenant_usages\u0027.\n\nPerhaps even \u0027test_get_usage_tenant_empty_response\u0027?\n\nDo you plan on adding a test case for the list case too?","commit_id":"fe22b9255ac6614cf7e639a9e37240fab1cfc70d"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"665fc13dca58ed14c9233a109d6441cee7467840","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @decorators.idempotent_id(\u00270f2b059c-b74c-4f12-bc0e-99b7ae6c56ac\u0027)"},{"line_number":102,"context_line":"    def test_list_usage_empty(self):"},{"line_number":103,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":104,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":105,"context_line":"            self.alt_client.tenant_id, detailed\u003d\"1\")[\u0027tenant_usage\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_68f550cb","line":102,"range":{"start_line":102,"start_character":13,"end_line":102,"end_character":17},"in_reply_to":"1a1ced50_ec075a16","updated":"2017-03-24 15:47:52.000000000","message":"Good point, I\u0027ll provide the test for the list case.","commit_id":"fe22b9255ac6614cf7e639a9e37240fab1cfc70d"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"c3ff046bbe26d89b3f4436871f098020100b85a0","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":104,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":105,"context_line":"            self.alt_client.tenant_id, detailed\u003d\"1\")[\u0027tenant_usage\u0027]"},{"line_number":106,"context_line":"        self.assertEqual(len(tenant_usage), 0)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class TenantUsagesV240TestJSON(BaseTenantUsagesTestJSON):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a1ced50_8c8c2681","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":46},"updated":"2017-03-23 17:53:00.000000000","message":"Perhaps the following instead, just so it\u0027s explicit that it\u0027s an empty dict (not an empty list) returned.\n\n    self.assertEqual(tenant_usage, {})\n\nA similar test using \u0027list_tenant_usages\u0027 would use:\n\n    self.assertEqual(tenant_usages, [])","commit_id":"fe22b9255ac6614cf7e639a9e37240fab1cfc70d"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"665fc13dca58ed14c9233a109d6441cee7467840","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":104,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":105,"context_line":"            self.alt_client.tenant_id, detailed\u003d\"1\")[\u0027tenant_usage\u0027]"},{"line_number":106,"context_line":"        self.assertEqual(len(tenant_usage), 0)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class TenantUsagesV240TestJSON(BaseTenantUsagesTestJSON):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffe62b97_08d3643a","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":46},"in_reply_to":"1a1ced50_8c8c2681","updated":"2017-03-24 15:47:52.000000000","message":"Looks much more explicit, I\u0027ll make the changes.","commit_id":"fe22b9255ac6614cf7e639a9e37240fab1cfc70d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        super(TenantUsagesV240TestJSON, cls).resource_setup()"},{"line_number":135,"context_line":"        cls.tenant_id \u003d cls.client.tenant_id"},{"line_number":136,"context_line":"        # Create several servers"},{"line_number":137,"context_line":"        cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027, max_count\u003dcls.num_servers)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9912-4249-8b51-e48d664e926e\u0027)"},{"line_number":140,"context_line":"    def test_list_usage_tenant_paginated(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_dae1419d","line":137,"range":{"start_line":137,"start_character":52,"end_line":137,"end_character":61},"updated":"2017-05-23 09:17:47.000000000","message":"i suggest to make it min_count as there is no guarantee that nova will create that many server as mentioned in max_count. if it does not then L167 \u0026 L197 fail.","commit_id":"d148ca85152051cef523e061f038afa1c5518326"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # Get usage for a specific tenant, with limit"},{"line_number":172,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":173,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT, self.tenant_id,"},{"line_number":174,"context_line":"            limit\u003d\"1\", detailed\u003d\"1\")[\u0027tenant_usage\u0027]"},{"line_number":175,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9612-4249-3b51-e3ad664e926f\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_baa56d49","line":174,"range":{"start_line":174,"start_character":23,"end_line":174,"end_character":35},"updated":"2017-05-23 09:17:47.000000000","message":"i do not think \u0027detailed\u0027 on show query matters, it is being ignored by nova. we should not pass this query for show API.","commit_id":"d148ca85152051cef523e061f038afa1c5518326"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # Get usage for a specific tenant, with limit \u0026 marker"},{"line_number":180,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":181,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":182,"context_line":"            self.tenant_id, limit\u003d\"1\", detailed\u003d\"1\")"},{"line_number":183,"context_line":"        self.assertIn(\u0027tenant_usage_links\u0027, tenant_usages,"},{"line_number":184,"context_line":"                      \"Invalid response %s\" % tenant_usages)"},{"line_number":185,"context_line":"        pages \u003d 1"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_7a6915f7","line":182,"range":{"start_line":182,"start_character":39,"end_line":182,"end_character":51},"updated":"2017-05-23 09:17:47.000000000","message":"ditto","commit_id":"d148ca85152051cef523e061f038afa1c5518326"}],"tempest/api/compute/admin/test_simple_tenant_usage_negative.py":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"086020ac80a23c68a52f22e156cd7d7bf03f84ba","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    min_microversion \u003d \"2.40\""},{"line_number":83,"context_line":"    max_microversion \u003d \"latest\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    def skip_checks(cls):"},{"line_number":87,"context_line":"        super(TenantUsagesPaginationNegativeTestJSON, cls).skip_checks()"},{"line_number":88,"context_line":"        api_version_utils.check_skip_with_microversion("},{"line_number":89,"context_line":"            cls.min_microversion,"},{"line_number":90,"context_line":"            cls.max_microversion,"},{"line_number":91,"context_line":"            CONF.compute.min_microversion,"},{"line_number":92,"context_line":"            CONF.compute.max_microversion)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u00275692fcd9-6075-466c-86c1-67eea6ae3605\u0027)"},{"line_number":95,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2ab6493d","line":92,"range":{"start_line":85,"start_character":0,"end_line":92,"end_character":42},"updated":"2017-03-20 21:27:20.000000000","message":"Can you delete this and rely on the one from BaseV2ComputeTest?","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    min_microversion \u003d \"2.40\""},{"line_number":83,"context_line":"    max_microversion \u003d \"latest\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @classmethod"},{"line_number":86,"context_line":"    def skip_checks(cls):"},{"line_number":87,"context_line":"        super(TenantUsagesPaginationNegativeTestJSON, cls).skip_checks()"},{"line_number":88,"context_line":"        api_version_utils.check_skip_with_microversion("},{"line_number":89,"context_line":"            cls.min_microversion,"},{"line_number":90,"context_line":"            cls.max_microversion,"},{"line_number":91,"context_line":"            CONF.compute.min_microversion,"},{"line_number":92,"context_line":"            CONF.compute.max_microversion)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u00275692fcd9-6075-466c-86c1-67eea6ae3605\u0027)"},{"line_number":95,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_d98bb1c1","line":92,"range":{"start_line":85,"start_character":0,"end_line":92,"end_character":42},"in_reply_to":"1a1ced50_2ab6493d","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":96,"context_line":"    def test_list_usage_all_tenants_invalid_limit(self):"},{"line_number":97,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":98,"context_line":"                  \u0027limit\u0027: \u0027ABCD\u0027}"},{"line_number":99,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":100,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_204e656f","line":98,"range":{"start_line":98,"start_character":28,"end_line":98,"end_character":32},"updated":"2017-03-21 02:56:50.000000000","message":"you can directly use \u0027invalid_limit\u0027, which may make the code self-commented","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":96,"context_line":"    def test_list_usage_all_tenants_invalid_limit(self):"},{"line_number":97,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":98,"context_line":"                  \u0027limit\u0027: \u0027ABCD\u0027}"},{"line_number":99,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":100,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_f9886dc7","line":98,"range":{"start_line":98,"start_character":28,"end_line":98,"end_character":32},"in_reply_to":"1a1ced50_204e656f","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def test_list_usage_all_tenants_invalid_marker(self):"},{"line_number":105,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":106,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":107,"context_line":"                  \u0027marker\u0027: \u0027ABCD\u0027}"},{"line_number":108,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":109,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2083c557","line":107,"range":{"start_line":107,"start_character":29,"end_line":107,"end_character":33},"updated":"2017-03-21 02:56:50.000000000","message":"ditto","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def test_list_usage_all_tenants_invalid_marker(self):"},{"line_number":105,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":106,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":107,"context_line":"                  \u0027marker\u0027: \u0027ABCD\u0027}"},{"line_number":108,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":109,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_1992a9f6","line":107,"range":{"start_line":107,"start_character":29,"end_line":107,"end_character":33},"in_reply_to":"1a1ced50_2083c557","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":113,"context_line":"    def test_get_usage_tenant_invalid_limit(self):"},{"line_number":114,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":115,"context_line":"                  \u0027limit\u0027: \u0027ABCD\u0027}"},{"line_number":116,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":117,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":118,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_607dbd6d","line":115,"range":{"start_line":115,"start_character":28,"end_line":115,"end_character":32},"updated":"2017-03-21 02:56:50.000000000","message":"ditto","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":113,"context_line":"    def test_get_usage_tenant_invalid_limit(self):"},{"line_number":114,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":115,"context_line":"                  \u0027limit\u0027: \u0027ABCD\u0027}"},{"line_number":116,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":117,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":118,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_79c39ded","line":115,"range":{"start_line":115,"start_character":28,"end_line":115,"end_character":32},"in_reply_to":"1a1ced50_607dbd6d","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def test_get_usage_tenant_invalid_marker(self):"},{"line_number":123,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":124,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":125,"context_line":"                  \u0027marker\u0027: \u0027ABCD\u0027}"},{"line_number":126,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":127,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":128,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_8080f947","line":125,"range":{"start_line":125,"start_character":29,"end_line":125,"end_character":33},"updated":"2017-03-21 02:56:50.000000000","message":"ditto","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    def test_get_usage_tenant_invalid_marker(self):"},{"line_number":123,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":124,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":125,"context_line":"                  \u0027marker\u0027: \u0027ABCD\u0027}"},{"line_number":126,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":127,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":128,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_59bee165","line":125,"range":{"start_line":125,"start_character":29,"end_line":125,"end_character":33},"in_reply_to":"1a1ced50_8080f947","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d657946422daace9dd6086e3bc894c12f4923879","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def test_list_usage_all_tenants_invalid_marker(self):"},{"line_number":95,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":96,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":97,"context_line":"                  \u0027marker\u0027: \u0027invalid_limit\u0027}"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_8a8b8267","line":97,"range":{"start_line":97,"start_character":29,"end_line":97,"end_character":42},"updated":"2017-03-22 02:24:02.000000000","message":"invalid_marker","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"e6d9a92cb7d9bda2c3435a54d3e39fa66615cdbc","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def test_list_usage_all_tenants_invalid_marker(self):"},{"line_number":95,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":96,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":97,"context_line":"                  \u0027marker\u0027: \u0027invalid_limit\u0027}"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          self.adm_client.list_tenant_usages, **params)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_a4f4db5a","line":97,"range":{"start_line":97,"start_character":29,"end_line":97,"end_character":42},"in_reply_to":"1a1ced50_8a8b8267","updated":"2017-03-22 15:15:01.000000000","message":"Oops!","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d657946422daace9dd6086e3bc894c12f4923879","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def test_get_usage_tenant_invalid_marker(self):"},{"line_number":113,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":114,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":115,"context_line":"                  \u0027marker\u0027: \u0027invalid_limit\u0027}"},{"line_number":116,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":117,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":118,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_2adfee69","line":115,"range":{"start_line":115,"start_character":29,"end_line":115,"end_character":42},"updated":"2017-03-22 02:24:02.000000000","message":"invalid_marker","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"e6d9a92cb7d9bda2c3435a54d3e39fa66615cdbc","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def test_get_usage_tenant_invalid_marker(self):"},{"line_number":113,"context_line":"        params \u003d {\u0027detailed\u0027: \u00271\u0027,"},{"line_number":114,"context_line":"                  \u0027limit\u0027: \u00271\u0027,"},{"line_number":115,"context_line":"                  \u0027marker\u0027: \u0027invalid_limit\u0027}"},{"line_number":116,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":117,"context_line":"                          self.adm_client.show_tenant_usage,"},{"line_number":118,"context_line":"                          self.tenant_id, **params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_c4e717aa","line":115,"range":{"start_line":115,"start_character":29,"end_line":115,"end_character":42},"in_reply_to":"1a1ced50_2adfee69","updated":"2017-03-22 15:15:01.000000000","message":"Oops","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"8b780d549cd81d9b57140e8696ad37c6539cb30a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import datetime"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.compute import base"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":"from tempest.lib import decorators"},{"line_number":21,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":22,"context_line":"from tempest import test"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_d6c8a057","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":26},"updated":"2017-03-22 18:00:38.000000000","message":"This can go now, I think.","commit_id":"eed5c26c64f89dd4cac417529d46dfdc5188acb7"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"8b780d549cd81d9b57140e8696ad37c6539cb30a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from tempest.lib import decorators"},{"line_number":21,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":22,"context_line":"from tempest import test"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TenantUsagesNegativeTestJSON(base.BaseV2ComputeAdminTest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_56e3d0d8","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":18},"updated":"2017-03-22 18:00:38.000000000","message":"This too.","commit_id":"eed5c26c64f89dd4cac417529d46dfdc5188acb7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                          self.client.list_tenant_usages, **params)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class TenantUsagesPaginationNegativeTestJSON(TenantUsagesNegativeTestJSON):"},{"line_number":76,"context_line":"    min_microversion \u003d \"2.40\""},{"line_number":77,"context_line":"    max_microversion \u003d \"latest\""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_da1ee1b9","line":75,"range":{"start_line":75,"start_character":45,"end_line":75,"end_character":73},"updated":"2017-05-23 09:17:47.000000000","message":"do we really want to inherit 2.40 tests from BaseV2ComputeAdminTest ?\n\nThis has issue of running tests in BaseV2ComputeAdminTest twice with same version if config min microversion is \u003e2.40\n\nI prefer to inherit this new class from BaseV2ComputeAdminTest so that we tests \u0027limit\u0027, \u0027marker\u0027 negative cases only with 2.40 version.","commit_id":"d148ca85152051cef523e061f038afa1c5518326"}],"tempest/api/compute/admin/test_simple_tenant_usage_pagination.py":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"086020ac80a23c68a52f22e156cd7d7bf03f84ba","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    min_microversion \u003d \"2.40\""},{"line_number":32,"context_line":"    max_microversion \u003d \"latest\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def skip_checks(cls):"},{"line_number":36,"context_line":"        super(TenantUsagePaginationTestJSON, cls).skip_checks()"},{"line_number":37,"context_line":"        api_version_utils.check_skip_with_microversion("},{"line_number":38,"context_line":"            cls.min_microversion,"},{"line_number":39,"context_line":"            cls.max_microversion,"},{"line_number":40,"context_line":"            CONF.compute.min_microversion,"},{"line_number":41,"context_line":"            CONF.compute.max_microversion)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_2a1ac96e","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":42},"updated":"2017-03-20 21:27:20.000000000","message":"It looks like the skip_checks method you inherit from BaseV2ComputeTest is probably sufficient here. Unless I\u0027m missing something ;)","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    min_microversion \u003d \"2.40\""},{"line_number":32,"context_line":"    max_microversion \u003d \"latest\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def skip_checks(cls):"},{"line_number":36,"context_line":"        super(TenantUsagePaginationTestJSON, cls).skip_checks()"},{"line_number":37,"context_line":"        api_version_utils.check_skip_with_microversion("},{"line_number":38,"context_line":"            cls.min_microversion,"},{"line_number":39,"context_line":"            cls.max_microversion,"},{"line_number":40,"context_line":"            CONF.compute.min_microversion,"},{"line_number":41,"context_line":"            CONF.compute.max_microversion)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @classmethod"},{"line_number":44,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_b9b9957b","line":41,"range":{"start_line":34,"start_character":0,"end_line":41,"end_character":42},"in_reply_to":"1a1ced50_2a1ac96e","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        cls.tenant_id \u003d cls.client.tenant_id"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Create several servers"},{"line_number":55,"context_line":"        for _ in range(3):"},{"line_number":56,"context_line":"            cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def _parse_strtime(cls, at):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_a0dc15e5","line":56,"range":{"start_line":55,"start_character":0,"end_line":56,"end_character":55},"updated":"2017-03-21 02:56:50.000000000","message":"you can use max_count\u003d3 to create 3 servers, which will reduce the whole server creating time.","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        cls.tenant_id \u003d cls.client.tenant_id"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Create several servers"},{"line_number":55,"context_line":"        for _ in range(3):"},{"line_number":56,"context_line":"            cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def _parse_strtime(cls, at):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_f9af8d27","line":56,"range":{"start_line":55,"start_character":0,"end_line":56,"end_character":55},"in_reply_to":"1a1ced50_a0dc15e5","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def _parse_strtime(cls, at):"},{"line_number":60,"context_line":"        # Returns formatted datetime"},{"line_number":61,"context_line":"        return at.strftime(\u0027%Y-%m-%dT%H:%M:%S.%f\u0027)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_60e93d80","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":22},"updated":"2017-03-21 02:56:50.000000000","message":"this is not used","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def _parse_strtime(cls, at):"},{"line_number":60,"context_line":"        # Returns formatted datetime"},{"line_number":61,"context_line":"        return at.strftime(\u0027%Y-%m-%dT%H:%M:%S.%f\u0027)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_19a9c924","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":22},"in_reply_to":"1a1ced50_60e93d80","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        # Returns formatted datetime"},{"line_number":61,"context_line":"        return at.strftime(\u0027%Y-%m-%dT%H:%M:%S.%f\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def call_until_valid(self, func, duration, *args, **kwargs):"},{"line_number":64,"context_line":"        # Call until get valid response for \"duration\""},{"line_number":65,"context_line":"        # because tenant usage doesn\u0027t become available immediately"},{"line_number":66,"context_line":"        # after create VM."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_c08591ad","line":63,"range":{"start_line":63,"start_character":37,"end_line":63,"end_character":45},"updated":"2017-03-21 02:56:50.000000000","message":"this is no need to act as a parameter, for the value is always VALID_WAIT","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        # Returns formatted datetime"},{"line_number":61,"context_line":"        return at.strftime(\u0027%Y-%m-%dT%H:%M:%S.%f\u0027)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def call_until_valid(self, func, duration, *args, **kwargs):"},{"line_number":64,"context_line":"        # Call until get valid response for \"duration\""},{"line_number":65,"context_line":"        # because tenant usage doesn\u0027t become available immediately"},{"line_number":66,"context_line":"        # after create VM."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_5965011c","line":63,"range":{"start_line":63,"start_character":37,"end_line":63,"end_character":45},"in_reply_to":"1a1ced50_c08591ad","updated":"2017-03-21 15:43:22.000000000","message":"Done","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9912-4249-3b51-e3ad664e926f\u0027)"},{"line_number":88,"context_line":"    def test_list_usage_tenant_paginated_marker(self):"},{"line_number":89,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":90,"context_line":"            self.adm_client.list_tenant_usages, VALID_WAIT,"},{"line_number":91,"context_line":"            limit\u003d\"1\", detailed\u003d\"1\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_00032910","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":47},"updated":"2017-03-21 02:56:50.000000000","message":"I don\u0027t get it, can you add some code comments?","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"d41a5b343d9ae5b84a76e649a857ae6b5423a713","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9912-4249-3b51-e3ad664e926f\u0027)"},{"line_number":88,"context_line":"    def test_list_usage_tenant_paginated_marker(self):"},{"line_number":89,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":90,"context_line":"            self.adm_client.list_tenant_usages, VALID_WAIT,"},{"line_number":91,"context_line":"            limit\u003d\"1\", detailed\u003d\"1\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_1980e98a","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":47},"in_reply_to":"1a1ced50_00032910","updated":"2017-03-21 15:43:22.000000000","message":"I rewrote this test to make it more meaningful","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"df237902cd68d211242353a40452053273fd344a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9612-4249-3b51-e3ad664e926f\u0027)"},{"line_number":110,"context_line":"    def test_get_usage_tenant_paginated_marker(self):"},{"line_number":111,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":112,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":113,"context_line":"            self.tenant_id, limit\u003d\"1\", detailed\u003d\"1\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_e31e1762","line":110,"range":{"start_line":110,"start_character":40,"end_line":110,"end_character":46},"updated":"2017-03-21 02:56:50.000000000","message":"where marker is?","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"d624d0085e42185a31964317be7192f06d9b47b4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @decorators.idempotent_id(\u0027062c8ae9-9612-4249-3b51-e3ad664e926f\u0027)"},{"line_number":110,"context_line":"    def test_get_usage_tenant_paginated_marker(self):"},{"line_number":111,"context_line":"        tenant_usages \u003d self.call_until_valid("},{"line_number":112,"context_line":"            self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":113,"context_line":"            self.tenant_id, limit\u003d\"1\", detailed\u003d\"1\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_8b49d162","line":110,"range":{"start_line":110,"start_character":40,"end_line":110,"end_character":46},"in_reply_to":"1a1ced50_e31e1762","updated":"2017-03-21 19:47:00.000000000","message":"Indeed, without a marker this would have looped forever... but see comment below.","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"d624d0085e42185a31964317be7192f06d9b47b4","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            tenant_usage \u003d tenant_usages[\u0027tenant_usage\u0027]"},{"line_number":119,"context_line":"            tenant_usages \u003d self.call_until_valid("},{"line_number":120,"context_line":"                self.adm_client.show_tenant_usage, VALID_WAIT,"},{"line_number":121,"context_line":"                self.tenant_id, limit\u003d\"1\", detailed\u003d\"1\")[\u0027tenant_usage\u0027]"},{"line_number":122,"context_line":"            self.assertEqual(len(tenant_usage[\u0027server_usages\u0027]), 1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_0b3fa187","line":121,"range":{"start_line":121,"start_character":56,"end_line":121,"end_character":72},"updated":"2017-03-21 19:47:00.000000000","message":"This is what prevented the infinite loop b/c \u0027tenant_usages_links\u0027 aren\u0027t inside \u0027tenant_usages\u0027 (they\u0027re adjacent).","commit_id":"fce2a1c9c96a245562c3e0abda94b7918c470d5c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d657946422daace9dd6086e3bc894c12f4923879","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1a1ced50_2ad0ce1e","updated":"2017-03-22 02:24:02.000000000","message":"it seems these testcases can be put in test_simple_tenant_usage.py(a new class), and no need a new file","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"},{"author":{"_account_id":7020,"name":"Joe Hakim Rahme","email":"jhakimra@redhat.com","username":"rahmu"},"change_message_id":"e6d9a92cb7d9bda2c3435a54d3e39fa66615cdbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1a1ced50_24daabe8","in_reply_to":"1a1ced50_2ad0ce1e","updated":"2017-03-22 15:15:01.000000000","message":"Done","commit_id":"1c817d3cd82582e7cb7845f34e6971b9f91220d4"}],"tempest/lib/api_schema/response/compute/v2_1/tenant_usages.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \u0027total_memory_mb_usage\u0027: {\u0027type\u0027: \u0027number\u0027},"},{"line_number":53,"context_line":"        \u0027total_vcpus_usage\u0027: {\u0027type\u0027: \u0027number\u0027},"},{"line_number":54,"context_line":"    },"},{"line_number":55,"context_line":"    \u0027dependencies\u0027: {"},{"line_number":56,"context_line":"        \u0027server_usages\u0027: ["},{"line_number":57,"context_line":"            \u0027start\u0027, \u0027stop\u0027, \u0027tenant_id\u0027,"},{"line_number":58,"context_line":"            \u0027total_hours\u0027, \u0027total_local_gb_usage\u0027,"},{"line_number":59,"context_line":"            \u0027total_memory_mb_usage\u0027, \u0027total_vcpus_usage\u0027"},{"line_number":60,"context_line":"        ]"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"_tenant_usage_get \u003d copy.deepcopy(_tenant_usage_list)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_1a61f905","line":61,"range":{"start_line":55,"start_character":0,"end_line":61,"end_character":5},"updated":"2017-05-23 09:17:47.000000000","message":"nice catch and fix, thanks.","commit_id":"d148ca85152051cef523e061f038afa1c5518326"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            \u0027tenant_usages\u0027: {"},{"line_number":72,"context_line":"                \u0027type\u0027: \u0027array\u0027,"},{"line_number":73,"context_line":"                \u0027items\u0027: _tenant_usage_list"},{"line_number":74,"context_line":"            }"},{"line_number":75,"context_line":"        },"},{"line_number":76,"context_line":"        \u0027required\u0027: [\u0027tenant_usages\u0027]"},{"line_number":77,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_0f61b905","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":13},"updated":"2017-05-23 09:17:47.000000000","message":"as we are testing pagination , we should extend this schema for \u0027tenant_usage_links\u0027 as optional.","commit_id":"d148ca85152051cef523e061f038afa1c5518326"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"14afc225e462433bf805dc16e96a8f5c1dbc1676","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":84,"context_line":"        \u0027properties\u0027: {"},{"line_number":85,"context_line":"            \u0027tenant_usage\u0027: _tenant_usage_get"},{"line_number":86,"context_line":"        },"},{"line_number":87,"context_line":"        \u0027required\u0027: [\u0027tenant_usage\u0027]"},{"line_number":88,"context_line":"    }"},{"line_number":89,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_ef5d6547","line":86,"range":{"start_line":86,"start_character":0,"end_line":86,"end_character":10},"updated":"2017-05-23 09:17:47.000000000","message":"ditto","commit_id":"d148ca85152051cef523e061f038afa1c5518326"}]}
