)]}'
{"tempest/api/compute/admin/test_servers.py":[{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"1b94422bdd5046b72123817991d494c5a84b66f5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        cls.admin_client \u003d cls._get_identity_admin_client()"},{"line_number":39,"context_line":"        tenant \u003d cls.admin_client.get_tenant_by_name("},{"line_number":40,"context_line":"            cls.client.tenant_name)"},{"line_number":41,"context_line":"        cls.tenant_id \u003d tenant[\u0027id\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        cls.s1_name \u003d rand_name(\u0027server\u0027)"},{"line_number":44,"context_line":"        resp, server \u003d cls.create_server(name\u003dcls.s1_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2FkYY%3D","line":41,"updated":"2013-09-24 15:35:50.000000000","message":"if anyone asks for further changes, maybe rename this into admin_tenant_id so it will be easier to figure what it is used for","commit_id":"3c44af3264c9954ba1c0bc7c35d47b44ea016247"}],"tempest/api/compute/servers/test_server_resize.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"63e9d6902b9f01c5c9e34042e5cb7b3862842068","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from tempest.test import attr"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ServerActionsTestJSON(base.BaseComputeAdminTest):"},{"line_number":31,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":32,"context_line":"    resize_available \u003d tempest.config.TempestConfig().compute.resize_available"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FX1w%3D","line":30,"updated":"2013-09-05 15:06:21.000000000","message":"The class name is not renamed.","commit_id":"cb444b4d9d9c00d52463a75ac53b608c372c5e84"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3cd02751f9318899af605bbb9bce1f544378cfe4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from tempest.test import attr"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ServerActionsTestJSON(base.BaseComputeAdminTest):"},{"line_number":31,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":32,"context_line":"    resize_available \u003d tempest.config.TempestConfig().compute.resize_available"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FVoo%3D","line":30,"in_reply_to":"AAAASn%2F%2FX1w%3D","updated":"2013-09-06 02:46:51.000000000","message":"Thank you! will fix it in next patch set","commit_id":"cb444b4d9d9c00d52463a75ac53b608c372c5e84"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"63e9d6902b9f01c5c9e34042e5cb7b3862842068","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        cls.clear_servers()"},{"line_number":52,"context_line":"        resp, server \u003d cls.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":53,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":54,"context_line":"        cls.password \u003d server[\u0027adminPass\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _detect_server_image_flavor(self, server_id):"},{"line_number":57,"context_line":"        # Detects the current server image flavor ref."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FX1s%3D","line":54,"updated":"2013-09-05 15:06:21.000000000","message":"\u0027cls.password\u0027 Not in use.","commit_id":"cb444b4d9d9c00d52463a75ac53b608c372c5e84"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3cd02751f9318899af605bbb9bce1f544378cfe4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        cls.clear_servers()"},{"line_number":52,"context_line":"        resp, server \u003d cls.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":53,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":54,"context_line":"        cls.password \u003d server[\u0027adminPass\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _detect_server_image_flavor(self, server_id):"},{"line_number":57,"context_line":"        # Detects the current server image flavor ref."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FVog%3D","line":54,"in_reply_to":"AAAASn%2F%2FX1s%3D","updated":"2013-09-06 02:46:51.000000000","message":"Thank you! will fix it in next patch set","commit_id":"cb444b4d9d9c00d52463a75ac53b608c372c5e84"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"57a5c9b6ed2de4139c7e60c0083f603e225c6ea6","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        while True:"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                resp, body \u003d self.flavors_client.get_flavor_details(flavor_id)"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"            flavor_id \u003d rand_int_id(start\u003d1000)"},{"line_number":71,"context_line":"        return flavor_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FIaQ%3D","line":68,"updated":"2013-09-11 13:12:43.000000000","message":"Why not use exceptions.NotFound here?","commit_id":"319430dc7dc24fd4417fca184fcae5e39425864d"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"91d7ef0faf24da16136be4d1341ff91f7ab69fde","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        while True:"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                resp, body \u003d self.flavors_client.get_flavor_details(flavor_id)"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"            flavor_id \u003d rand_int_id(start\u003d1000)"},{"line_number":71,"context_line":"        return flavor_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FF98%3D","line":68,"in_reply_to":"AAAASn%2F%2FIaQ%3D","updated":"2013-09-12 07:37:07.000000000","message":"good point!","commit_id":"319430dc7dc24fd4417fca184fcae5e39425864d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0161062a45db362694d2d4aed102c62a5928ef9c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def rebuild_servers(cls):"},{"line_number":50,"context_line":"        # Destroy any existing server and creates a new one"},{"line_number":51,"context_line":"        cls.clear_servers()"},{"line_number":52,"context_line":"        resp, server \u003d cls.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":53,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _detect_server_image_flavor(self, server_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2B%2Bz8%3D","line":52,"updated":"2013-09-14 15:48:36.000000000","message":"I guess we need a addCleanup call for a new server.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"bed4341b5dfc77b6522159878b2c4a2bb0530846","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def rebuild_servers(cls):"},{"line_number":50,"context_line":"        # Destroy any existing server and creates a new one"},{"line_number":51,"context_line":"        cls.clear_servers()"},{"line_number":52,"context_line":"        resp, server \u003d cls.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":53,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _detect_server_image_flavor(self, server_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F7Ys%3D","line":52,"in_reply_to":"AAAASn%2F%2B%2Bz8%3D","updated":"2013-09-17 09:41:12.000000000","message":"tearDownClass() in parent class will cleanup all the test resources.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0161062a45db362694d2d4aed102c62a5928ef9c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return int(current_flavor), int(new_flavor_ref)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _get_unused_flavor_id(self):"},{"line_number":64,"context_line":"        flavor_id \u003d 10"},{"line_number":65,"context_line":"        while True:"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                resp, body \u003d self.flavors_client.get_flavor_details(flavor_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2B%2Bzs%3D","line":64,"updated":"2013-09-14 15:48:36.000000000","message":"I prefer \"flavor_id \u003d rand_int_id(start\u003d1000)\" for here also, because we can understand the id, which is added by tempest, easily.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"bed4341b5dfc77b6522159878b2c4a2bb0530846","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return int(current_flavor), int(new_flavor_ref)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _get_unused_flavor_id(self):"},{"line_number":64,"context_line":"        flavor_id \u003d 10"},{"line_number":65,"context_line":"        while True:"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                resp, body \u003d self.flavors_client.get_flavor_details(flavor_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F7Yo%3D","line":64,"in_reply_to":"AAAASn%2F%2B%2Bzs%3D","updated":"2013-09-17 09:41:12.000000000","message":"Done","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"b95f235bfccf737d32235d5ef406086b148c19b0","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def test_resize_server_using_overlimit_ram(self):"},{"line_number":135,"context_line":"        flavor_name \u003d rand_name(\"flavor-\")"},{"line_number":136,"context_line":"        flavor_id \u003d self._get_unused_flavor_id()"},{"line_number":137,"context_line":"        ram \u003d 1024 * 1024 * 1024"},{"line_number":138,"context_line":"        vcpus \u003d 8"},{"line_number":139,"context_line":"        disk \u003d 10"},{"line_number":140,"context_line":"        self.addCleanup(self.flavors_client.delete_flavor, flavor_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F9Dk%3D","line":137,"updated":"2013-09-16 16:42:58.000000000","message":"We had better to get the available ram, and then create an overlimit ram based on the available ram.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"bed4341b5dfc77b6522159878b2c4a2bb0530846","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def test_resize_server_using_overlimit_ram(self):"},{"line_number":135,"context_line":"        flavor_name \u003d rand_name(\"flavor-\")"},{"line_number":136,"context_line":"        flavor_id \u003d self._get_unused_flavor_id()"},{"line_number":137,"context_line":"        ram \u003d 1024 * 1024 * 1024"},{"line_number":138,"context_line":"        vcpus \u003d 8"},{"line_number":139,"context_line":"        disk \u003d 10"},{"line_number":140,"context_line":"        self.addCleanup(self.flavors_client.delete_flavor, flavor_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F6qQ%3D","line":137,"in_reply_to":"AAAAS3%2F%2F9Dk%3D","updated":"2013-09-17 09:41:12.000000000","message":"Good point!  But the over limit value should be \u0027quota + 1\u0027. it is not the available ram of hypervisor. I have a test, only got \u0027no valid host\u0027 when hypervisor didn\u0027t have enough resources.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"b95f235bfccf737d32235d5ef406086b148c19b0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                                             flavor_id)"},{"line_number":159,"context_line":"        self.assertRaises(exceptions.OverLimit,"},{"line_number":160,"context_line":"                          self.client.resize, self.server_id, flavor_ref[\u0027id\u0027])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class ServerResizeTestXML(ServerResizeTestJSON):"},{"line_number":164,"context_line":"    _interface \u003d \u0027xml\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F9Cw%3D","line":161,"updated":"2013-09-16 16:42:58.000000000","message":"It seems as if there should be a function for overlimit disk too. def test_resize_server_using_overlimit_disk(self):","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"bed4341b5dfc77b6522159878b2c4a2bb0530846","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                                                             flavor_id)"},{"line_number":159,"context_line":"        self.assertRaises(exceptions.OverLimit,"},{"line_number":160,"context_line":"                          self.client.resize, self.server_id, flavor_ref[\u0027id\u0027])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"class ServerResizeTestXML(ServerResizeTestJSON):"},{"line_number":164,"context_line":"    _interface \u003d \u0027xml\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2F6oI%3D","line":161,"in_reply_to":"AAAAS3%2F%2F9Cw%3D","updated":"2013-09-17 09:41:12.000000000","message":"there\u0027s no disk quota by default.","commit_id":"393599571064e1a823ad8f9de70136bfc22ca86f"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"faafd2ef87f506b6e115ac02d0ad5feabfe4c265","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            self.client.wait_for_server_status(self.server_id, \u0027ACTIVE\u0027)"},{"line_number":38,"context_line":"        except Exception:"},{"line_number":39,"context_line":"            self.rebuild_servers()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F4Mw%3D","line":39,"updated":"2013-09-17 20:16:55.000000000","message":"Where is the definition of rebuild_servers()? Just notice one: rebuild_servers(cls).","commit_id":"cd18ab4df3cfa81b5b3c98e8c4c9789cb79d5ed0"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"faafd2ef87f506b6e115ac02d0ad5feabfe4c265","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        # Detects the current server image flavor ref."},{"line_number":57,"context_line":"        resp, server \u003d self.client.get_server(self.server_id)"},{"line_number":58,"context_line":"        current_flavor \u003d server[\u0027flavor\u0027][\u0027id\u0027]"},{"line_number":59,"context_line":"        new_flavor_ref \u003d self.flavor_ref_alt \\"},{"line_number":60,"context_line":"            if int(current_flavor) \u003d\u003d self.flavor_ref else self.flavor_ref"},{"line_number":61,"context_line":"        return int(current_flavor), int(new_flavor_ref)"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F4LA%3D","line":59,"updated":"2013-09-17 20:16:55.000000000","message":"Variables of new_flavor_ref, flavor_ref_alt, flavor_ref looks similar. Thus I would suggest to use normal if...else clause, to make the code easier to be understood.","commit_id":"cd18ab4df3cfa81b5b3c98e8c4c9789cb79d5ed0"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"faafd2ef87f506b6e115ac02d0ad5feabfe4c265","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        flavor_id \u003d 10"},{"line_number":65,"context_line":"        while True:"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                resp, body \u003d self.flavors_client.get_flavor_details(flavor_id)"},{"line_number":68,"context_line":"            except Exception:"},{"line_number":69,"context_line":"                break"},{"line_number":70,"context_line":"            flavor_id \u003d rand_int_id(start\u003d1000)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F4KM%3D","line":67,"updated":"2013-09-17 20:16:55.000000000","message":"Would it be better to set the upper boundary for the maximum retry?\n\nWhen retrying why not changing flavor_id by adding 1, instead of rand_int_id?\n\nAnd why flavor_id\u0027s initial value is 10?","commit_id":"cd18ab4df3cfa81b5b3c98e8c4c9789cb79d5ed0"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"faafd2ef87f506b6e115ac02d0ad5feabfe4c265","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @testtools.skipIf(not resize_available, \u0027Resize not available.\u0027)"},{"line_number":93,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":94,"context_line":"    def test_resize_server_revert(self):"},{"line_number":95,"context_line":"        # The server\u0027s RAM and disk space should return to its original"},{"line_number":96,"context_line":"        # values after a resize is reverted"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F4Hw%3D","line":94,"updated":"2013-09-17 20:16:55.000000000","message":"test_resize_server_revert and test_resize_server_confirm has ~70% code duplication.","commit_id":"cd18ab4df3cfa81b5b3c98e8c4c9789cb79d5ed0"},{"author":{"_account_id":8641,"name":"DennyZhang","email":"filebat.mark@gmail.com","username":"dennyzhang"},"change_message_id":"faafd2ef87f506b6e115ac02d0ad5feabfe4c265","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            if int(time.time()) - start \u003e\u003d self.build_timeout:"},{"line_number":117,"context_line":"                message \u003d \u0027Server %s failed to revert resize within the \\"},{"line_number":118,"context_line":"                required time (%s s).\u0027 % (self.server_id, self.build_timeout)"},{"line_number":119,"context_line":"                raise exceptions.TimeoutException(message)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":122,"context_line":"    def test_resize_server_using_nonexist_flavor(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2F4GQ%3D","line":119,"updated":"2013-09-17 20:16:55.000000000","message":"If the operation doesn\u0027t timeout, do we need some assertions to make sure the test goes well?","commit_id":"cd18ab4df3cfa81b5b3c98e8c4c9789cb79d5ed0"}]}
