)]}'
{"tempest/api/compute/servers/test_server_actions.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"418f6c16dd358b455bad13bf51d79ae046d0b8e2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # Positive test:create backup successfully and rotate backups correctly"},{"line_number":204,"context_line":"        # create the first and the second backup"},{"line_number":205,"context_line":"        backup1 \u003d rand_name(\u0027backup\u0027)"},{"line_number":206,"context_line":"        self.servers_client.wait_for_server_status(self.server_id, \u0027ACTIVE\u0027)"},{"line_number":207,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":208,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":209,"context_line":"                                                    2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FtbA%3D","line":206,"updated":"2013-10-30 06:05:21.000000000","message":"no need to add this line, state is already ensured in setup()","commit_id":"df8c276deabc008bcf7bddfb700f6c5d4b909bb8"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"c6b4a0c709d428e27b9d897cd8310614ae3e08c8","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        # Positive test:create backup successfully and rotate backups correctly"},{"line_number":204,"context_line":"        # create the first and the second backup"},{"line_number":205,"context_line":"        backup1 \u003d rand_name(\u0027backup\u0027)"},{"line_number":206,"context_line":"        self.servers_client.wait_for_server_status(self.server_id, \u0027ACTIVE\u0027)"},{"line_number":207,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":208,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":209,"context_line":"                                                    2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2FtWI%3D","line":206,"in_reply_to":"AAAATn%2F%2FtbA%3D","updated":"2013-10-30 06:07:48.000000000","message":"yes, you are right.","commit_id":"df8c276deabc008bcf7bddfb700f6c5d4b909bb8"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"aaf6a47bf0eea6f68bb016af90426fcc2b45a524","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":207,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":208,"context_line":"                                                    2,"},{"line_number":209,"context_line":"                                                    backup1)"},{"line_number":210,"context_line":"        image1_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":211,"context_line":"        oldest_backup_exist \u003d True"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fsi4%3D","line":209,"updated":"2013-10-30 10:28:33.000000000","message":"perhaps check the status code returned before attempting to parse the response?","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                                                    2,"},{"line_number":209,"context_line":"                                                    backup1)"},{"line_number":210,"context_line":"        image1_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":211,"context_line":"        oldest_backup_exist \u003d True"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # the oldest one should be deleted automatically in this test"},{"line_number":214,"context_line":"        def _clean_oldest_backup(oldest_backup):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FsZc%3D","line":211,"updated":"2013-10-30 10:57:46.000000000","message":"Do we really need the \"oldest_backup_exist\"?","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"b21ca69a0b9f961fbd2a7e10f95900713f6db158","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                                                    2,"},{"line_number":209,"context_line":"                                                    backup1)"},{"line_number":210,"context_line":"        image1_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":211,"context_line":"        oldest_backup_exist \u003d True"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        # the oldest one should be deleted automatically in this test"},{"line_number":214,"context_line":"        def _clean_oldest_backup(oldest_backup):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Frm4%3D","line":211,"in_reply_to":"AAAATn%2F%2FsZc%3D","updated":"2013-10-30 14:07:17.000000000","message":"Yes, we need it. we can\u0027t assume the test will pass and rotate backups correctly here.","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            if oldest_backup_exist:"},{"line_number":216,"context_line":"                self.images_client.delete_image(oldest_backup)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        self.addCleanup(_clean_oldest_backup, image1_id)"},{"line_number":219,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        backup2 \u003d rand_name(\u0027backup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FsZQ%3D","line":218,"updated":"2013-10-30 10:57:46.000000000","message":"Do we need to delete the image1_id in tempest? If image1_id will be deleted by service (rotate backups).","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"b21ca69a0b9f961fbd2a7e10f95900713f6db158","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            if oldest_backup_exist:"},{"line_number":216,"context_line":"                self.images_client.delete_image(oldest_backup)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        self.addCleanup(_clean_oldest_backup, image1_id)"},{"line_number":219,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        backup2 \u003d rand_name(\u0027backup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Frn8%3D","line":218,"in_reply_to":"AAAATn%2F%2FsZQ%3D","updated":"2013-10-30 14:07:17.000000000","message":"if the test failed after creating backup1 before rotating backups, what will happend?","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"aaf6a47bf0eea6f68bb016af90426fcc2b45a524","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                                                    backup2)"},{"line_number":227,"context_line":"        image2_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":228,"context_line":"        self.addCleanup(self.images_client.delete_image, image2_id)"},{"line_number":229,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # verify they have been created"},{"line_number":232,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fsh0%3D","line":229,"updated":"2013-10-30 10:28:33.000000000","message":"similar comment about status code checking first","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"b21ca69a0b9f961fbd2a7e10f95900713f6db158","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                                                    backup2)"},{"line_number":227,"context_line":"        image2_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":228,"context_line":"        self.addCleanup(self.images_client.delete_image, image2_id)"},{"line_number":229,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        # verify they have been created"},{"line_number":232,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fro4%3D","line":229,"in_reply_to":"AAAATn%2F%2Fsh0%3D","updated":"2013-10-30 14:07:17.000000000","message":"I think we should handle the resource first.  Because if create_backup successfully \nthe return code is not 202( may be changed to 200 by mistake in nova api), the \nbackup image will not be deleted.\nI also don\u0027t want to parse the response just due to we need the image_id to\n register the clean up function.\nif the create failed, parse the response will failed also. I think it\u0027s ok here.","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            \u0027property-instance_uuid\u0027: self.server_id,"},{"line_number":236,"context_line":"            \u0027sort_key\u0027: \u0027created_at\u0027,"},{"line_number":237,"context_line":"        }"},{"line_number":238,"context_line":"        resp, image_list \u003d self.images_client.list_images_with_detail(params)"},{"line_number":239,"context_line":"        self.assertEqual(2, len(image_list))"},{"line_number":240,"context_line":"        self.assertEqual(set((backup1, backup2)),"},{"line_number":241,"context_line":"                         set((image_list[0][\u0027name\u0027], image_list[1][\u0027name\u0027])))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FsdQ%3D","line":238,"updated":"2013-10-30 10:57:46.000000000","message":"Please check the status code","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"b21ca69a0b9f961fbd2a7e10f95900713f6db158","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            \u0027property-instance_uuid\u0027: self.server_id,"},{"line_number":236,"context_line":"            \u0027sort_key\u0027: \u0027created_at\u0027,"},{"line_number":237,"context_line":"        }"},{"line_number":238,"context_line":"        resp, image_list \u003d self.images_client.list_images_with_detail(params)"},{"line_number":239,"context_line":"        self.assertEqual(2, len(image_list))"},{"line_number":240,"context_line":"        self.assertEqual(set((backup1, backup2)),"},{"line_number":241,"context_line":"                         set((image_list[0][\u0027name\u0027], image_list[1][\u0027name\u0027])))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Frmc%3D","line":238,"in_reply_to":"AAAATn%2F%2FsdQ%3D","updated":"2013-10-30 14:07:17.000000000","message":"there are other tests to verify the list_images_with_detail. I don\u0027t want to test something redundant, we are testing create_up here. But anyway will fix it","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":248,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":249,"context_line":"                                                    2,"},{"line_number":250,"context_line":"                                                    backup3)"},{"line_number":251,"context_line":"        image3_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":252,"context_line":"        self.addCleanup(self.images_client.delete_image, image3_id)"},{"line_number":253,"context_line":"        self.assertEqual(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fsc4%3D","line":250,"updated":"2013-10-30 10:57:46.000000000","message":"Please check the status code","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bba1a99c1cc548817db74c52f76a5303f23950b0","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":248,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":249,"context_line":"                                                    2,"},{"line_number":250,"context_line":"                                                    backup3)"},{"line_number":251,"context_line":"        image3_id \u003d parse_image_id(resp[\u0027location\u0027])"},{"line_number":252,"context_line":"        self.addCleanup(self.images_client.delete_image, image3_id)"},{"line_number":253,"context_line":"        self.assertEqual(202, resp.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Frfo%3D","line":250,"in_reply_to":"AAAATn%2F%2Fsc4%3D","updated":"2013-10-30 14:26:48.000000000","message":"line 253","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # the first back up should be deleted"},{"line_number":255,"context_line":"        self.images_client.wait_for_resource_deletion(image1_id)"},{"line_number":256,"context_line":"        oldest_backup_exist \u003d False"},{"line_number":257,"context_line":"        resp, image_list \u003d self.images_client.list_images_with_detail(params)"},{"line_number":258,"context_line":"        self.assertEqual(2, len(image_list))"},{"line_number":259,"context_line":"        self.assertEqual(set((backup3, backup2)),"},{"line_number":260,"context_line":"                         set((image_list[0][\u0027name\u0027], image_list[1][\u0027name\u0027])))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Fscw%3D","line":257,"updated":"2013-10-30 10:57:46.000000000","message":"Please check the status code","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"399080b375c04284649301cf358986e461ce9baf","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        resp, image_list \u003d self.images_client.list_images_with_detail(params)"},{"line_number":258,"context_line":"        self.assertEqual(2, len(image_list))"},{"line_number":259,"context_line":"        self.assertEqual(set((backup3, backup2)),"},{"line_number":260,"context_line":"                         set((image_list[0][\u0027name\u0027], image_list[1][\u0027name\u0027])))"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":263,"context_line":"    def test_get_console_output(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2FsaM%3D","line":260,"updated":"2013-10-30 10:57:46.000000000","message":"Please check the order of the members in the 2 set.","commit_id":"568a4922714fffd06121dd13a73f587199a2a903"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"0b7c8d52e2d70ffea96c79bda0ef67338e13235d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        backup1 \u003d rand_name(\u0027backup\u0027)"},{"line_number":206,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":207,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":208,"context_line":"                                                    2,"},{"line_number":209,"context_line":"                                                    backup1)"},{"line_number":210,"context_line":"        oldest_backup_exist \u003d True"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2Fnx8%3D","line":208,"updated":"2013-10-31 10:14:19.000000000","message":"I think we can use variables to store \"daily\" and \"2\", and reuse the variables in the follow create_backup.","commit_id":"ccc8946e6b11b0876aacacad16b873be1b6e5579"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"9946419208f2c38d06f21f5487672d10273f7663","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        backup1 \u003d rand_name(\u0027backup\u0027)"},{"line_number":206,"context_line":"        resp, _ \u003d self.servers_client.create_backup(self.server_id,"},{"line_number":207,"context_line":"                                                    \u0027daily\u0027,"},{"line_number":208,"context_line":"                                                    2,"},{"line_number":209,"context_line":"                                                    backup1)"},{"line_number":210,"context_line":"        oldest_backup_exist \u003d True"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FKqs%3D","line":208,"in_reply_to":"AAAATn%2F%2Fnx8%3D","updated":"2013-11-13 13:43:47.000000000","message":"A def _create_backup(name) helper method in this file would be nice.","commit_id":"ccc8946e6b11b0876aacacad16b873be1b6e5579"}]}
