)]}'
{"tempest/api/compute/images/test_images.py":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"6245aa1b8bb75c77b281a14eded4c32ce6bf31d5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.addCleanup(waiters.wait_for_server_status, self.servers_client,"},{"line_number":53,"context_line":"                        server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":54,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":55,"context_line":"                                              wait_until\u003d\u0027SAVING\u0027)"},{"line_number":56,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":57,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":58,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_473b65c8","side":"PARENT","line":55,"range":{"start_line":55,"start_character":46,"end_line":55,"end_character":65},"updated":"2020-01-16 15:00:14.000000000","message":"I think that because you deleted wait_until a None value was saved in image variable instead of an image (it wasn\u0027t created yet) and therefore it failed in the gates on the next line due to KeyError.","commit_id":"e459e0d4489f7bc1eb7a821a9def0721a8f94c6a"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"1f28e3303adb54d067843b6726e38c28de318774","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.addCleanup(waiters.wait_for_server_status, self.servers_client,"},{"line_number":53,"context_line":"                        server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":54,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":55,"context_line":"                                              wait_until\u003d\u0027SAVING\u0027)"},{"line_number":56,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":57,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":58,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_d36dcc9a","side":"PARENT","line":55,"range":{"start_line":55,"start_character":46,"end_line":55,"end_character":65},"in_reply_to":"3fa7e38b_473b65c8","updated":"2020-01-17 07:02:01.000000000","message":"Martin, yes, you are correct. Since, I didn\u0027t pass \u0027wait_until\u0027 parameter, image received None value.\nI have corrected it.","commit_id":"e459e0d4489f7bc1eb7a821a9def0721a8f94c6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7acbedbde61547bf6dd7895fe857155b7ea2db86","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.addCleanup(waiters.wait_for_server_status, self.servers_client,"},{"line_number":53,"context_line":"                        server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":54,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":55,"context_line":"                                              wait_until\u003d\u0027SAVING\u0027)"},{"line_number":56,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":57,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":58,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a860de0d","side":"PARENT","line":55,"range":{"start_line":55,"start_character":46,"end_line":55,"end_character":65},"updated":"2020-01-17 09:53:49.000000000","message":"I\u0027m interested in knowing what was the reason to set this state as \u0027SAVING\u0027 here originally rather than \u0027ACTIVE\u0027","commit_id":"e459e0d4489f7bc1eb7a821a9def0721a8f94c6a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"69d17b3c6fc2a10ce470d98540e0c7fa344e7c85","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.addCleanup(waiters.wait_for_server_status, self.servers_client,"},{"line_number":53,"context_line":"                        server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":54,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":55,"context_line":"                                              wait_until\u003d\u0027SAVING\u0027)"},{"line_number":56,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":57,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":58,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_546bd11a","side":"PARENT","line":55,"range":{"start_line":55,"start_character":46,"end_line":55,"end_character":65},"in_reply_to":"3fa7e38b_9bfc4a0c","updated":"2020-01-21 17:20:20.000000000","message":"yeah, this test need image to be in SAVING state and check if that can be deleted.","commit_id":"e459e0d4489f7bc1eb7a821a9def0721a8f94c6a"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"a92f9f48432f10db3ffc7197a008359115a3953e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.addCleanup(waiters.wait_for_server_status, self.servers_client,"},{"line_number":53,"context_line":"                        server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":54,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":55,"context_line":"                                              wait_until\u003d\u0027SAVING\u0027)"},{"line_number":56,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":57,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":58,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9bfc4a0c","side":"PARENT","line":55,"range":{"start_line":55,"start_character":46,"end_line":55,"end_character":65},"in_reply_to":"3fa7e38b_a860de0d","updated":"2020-01-17 10:01:05.000000000","message":"Well, the reason here the state is set to \u0027SAVING\u0027 is we want to test whether the image is deleted in saving state.\nBut, along with reason, please have a look at above discussion as well.","commit_id":"e459e0d4489f7bc1eb7a821a9def0721a8f94c6a"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"e48aa256496c07f5e0bf73b0c93e5f34a582e0c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        snapshot_name \u003d data_utils.rand_name(\u0027test-snap\u0027)"},{"line_number":55,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":56,"context_line":"                                              name\u003dsnapshot_name,"},{"line_number":57,"context_line":"                                              wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":59,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":60,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_05cb1b4b","line":57,"range":{"start_line":57,"start_character":46,"end_line":57,"end_character":65},"updated":"2020-01-17 08:43:21.000000000","message":"1. This testcase is \"test_delete_saving_image\", so if we change wait_until to \u0027ACTIVE\u0027, we won\u0027t be testing \"delete_saving_image\".\n2. Can you paste the running log so that we can see how long it takes for a snapshot to become \u0027ACTIVE\u0027?","commit_id":"acb41f593b3381f3b904f9466aa931f637525ad7"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"16bb5ffc68ca0038e4e934c7c233cab0ce199837","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        snapshot_name \u003d data_utils.rand_name(\u0027test-snap\u0027)"},{"line_number":55,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":56,"context_line":"                                              name\u003dsnapshot_name,"},{"line_number":57,"context_line":"                                              wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":59,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":60,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e8db3677","line":57,"range":{"start_line":57,"start_character":46,"end_line":57,"end_character":65},"in_reply_to":"3fa7e38b_05cb1b4b","updated":"2020-01-17 09:20:41.000000000","message":"zhufl, the image snapshot is produced too quicker and tempest is not able to catch the \u0027SAVING\u0027 state, hence we need to change wait_until\u003d\u0027ACTIVE\u0027\nPlease have a look at https://bugs.launchpad.net/tempest/+bug/1713163.","commit_id":"acb41f593b3381f3b904f9466aa931f637525ad7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"69d17b3c6fc2a10ce470d98540e0c7fa344e7c85","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        snapshot_name \u003d data_utils.rand_name(\u0027test-snap\u0027)"},{"line_number":55,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":56,"context_line":"                                              name\u003dsnapshot_name,"},{"line_number":57,"context_line":"                                              wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":59,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":60,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f45e7d4f","line":57,"range":{"start_line":57,"start_character":46,"end_line":57,"end_character":65},"in_reply_to":"3fa7e38b_885de255","updated":"2020-01-21 17:20:20.000000000","message":"Yeah, Tempest should not assert on timing operation or at least should not assume the operation timing as test criteria. \n\nThis test is to check if the image in SAVING state can be deleted or not. I will say modify the tests to run only if the image is in SAVING state while deleting otherwise skip.\n\nsomething like that:\n\ntry:\n        image \u003d self.create_image_from_server(server[\u0027id\u0027],\n                                              wait_until\u003d\u0027SAVING\u0027)\nexcept lib_exc.TimeoutException:\n    if image.state \u003d ACTIVE:\n        skip tests\n    else:\n        self.client.delete_image(image[\u0027id\u0027])\n        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027\n               .format(image_id\u003dimage[\u0027id\u0027]))\n        self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]), msg)\n        self.assertEqual(snapshot_name, image[\u0027name\u0027])","commit_id":"acb41f593b3381f3b904f9466aa931f637525ad7"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"087651a32294018d8e03eac561bdd88df03d3a87","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        snapshot_name \u003d data_utils.rand_name(\u0027test-snap\u0027)"},{"line_number":55,"context_line":"        image \u003d self.create_image_from_server(server[\u0027id\u0027],"},{"line_number":56,"context_line":"                                              name\u003dsnapshot_name,"},{"line_number":57,"context_line":"                                              wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        self.client.delete_image(image[\u0027id\u0027])"},{"line_number":59,"context_line":"        msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":60,"context_line":"               .format(image_id\u003dimage[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_885de255","line":57,"range":{"start_line":57,"start_character":46,"end_line":57,"end_character":65},"in_reply_to":"3fa7e38b_e8db3677","updated":"2020-01-17 09:54:04.000000000","message":"Here is the running log file:- https://eefbeb35d1dc91371ee5-a40b9478ae1bd073dc32f331038fe6d7.ssl.cf2.rackcdn.com/702808/3/check/tempest-full-train-py3/82516f1/controller/logs/tempest_log.txt","commit_id":"acb41f593b3381f3b904f9466aa931f637525ad7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5a35d8a97360f224f85ad4ff144e14326db730ca","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":62,"context_line":"                   .format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b3296da3","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":31},"updated":"2020-01-31 13:54:39.000000000","message":"This won\u0027t be printed anywhere, what\u0027s the purpose of this msg?","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"669146f15c55fcceb0766f552269cca55b4f1337","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":62,"context_line":"                   .format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_fd2fa754","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":31},"in_reply_to":"3fa7e38b_7d0bb722","updated":"2020-02-02 04:12:45.000000000","message":"Thanks for clarification.","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"49797aa3d17970c66d2d21a14391f6eaddac7e10","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            msg \u003d (\u0027The image with ID {image_id} failed to be deleted\u0027"},{"line_number":62,"context_line":"                   .format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7d0bb722","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":31},"in_reply_to":"3fa7e38b_b3296da3","updated":"2020-02-02 01:31:01.000000000","message":"it will print if image is in SAVING and not deleted. is_resource_delete() method return false if image is not deleted[1]\n\n[1]https://github.com/openstack/tempest/blob/d75fd3936a53ade26daa2e79fe75e69e0851c190/tempest/lib/services/image/v2/images_client.py#L124","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5a35d8a97360f224f85ad4ff144e14326db730ca","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":68,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":69,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_96069f1b","line":66,"range":{"start_line":66,"start_character":30,"end_line":66,"end_character":46},"updated":"2020-01-31 13:54:39.000000000","message":"the timeout exception will be generated at L#57 meaning the image is in \u0027ACTIVE\u0027 state and not deleted\nso i think we need to delete it here","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"669146f15c55fcceb0766f552269cca55b4f1337","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":68,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":69,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_1d35e3a7","line":66,"range":{"start_line":66,"start_character":30,"end_line":66,"end_character":46},"in_reply_to":"3fa7e38b_1d2643bb","updated":"2020-02-02 04:12:45.000000000","message":"Yes, but there is an additional check for is_resource_deleted at L#73 so we need to delete the image before that.","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e0dc36a8b2bf19ad6ae2f87f5d159292b0bfcd38","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":68,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":69,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9dfd490b","line":66,"range":{"start_line":66,"start_character":30,"end_line":66,"end_character":46},"in_reply_to":"3fa7e38b_1d35e3a7","updated":"2020-02-03 15:02:25.000000000","message":"yeah, that check we need to remove. we cannot wait for image delete without deleting it.","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"49797aa3d17970c66d2d21a14391f6eaddac7e10","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":68,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":69,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_1d2643bb","line":66,"range":{"start_line":66,"start_character":30,"end_line":66,"end_character":46},"in_reply_to":"3fa7e38b_96069f1b","updated":"2020-02-02 01:31:01.000000000","message":"that will be deleted at class level cleanup added in base class\n\n- https://github.com/openstack/tempest/blob/f419f4d36fd0f99a9c53fe3a984d172b02e828c5/tempest/api/compute/base.py#L344","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"49797aa3d17970c66d2d21a14391f6eaddac7e10","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                            msg)"},{"line_number":65,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":66,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":67,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":68,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":69,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":70,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":71,"context_line":"            msg \u003d (\u0027The image with ID {image_id} has failed to be deleted\u0027"},{"line_number":72,"context_line":"                   .format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":73,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":74,"context_line":"                            msg)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"},{"line_number":77,"context_line":"    def test_create_image_from_stopped_server(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_bd1a8f68","line":74,"range":{"start_line":67,"start_character":0,"end_line":74,"end_character":32},"updated":"2020-02-02 01:31:01.000000000","message":"image will not be deleted here. That is deleted at tearDownClass level. \n\nWe need to skip the tests here so that we can clearly convey that this tests is skipped because SAVING image state cannot be captured.","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"5a35d8a97360f224f85ad4ff144e14326db730ca","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            msg \u003d (\u0027The image with ID {image_id} has failed to be deleted\u0027"},{"line_number":72,"context_line":"                   .format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":73,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":74,"context_line":"                            msg)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"},{"line_number":77,"context_line":"    def test_create_image_from_stopped_server(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b6207b9f","line":74,"range":{"start_line":74,"start_character":28,"end_line":74,"end_character":31},"updated":"2020-01-31 13:54:39.000000000","message":"same","commit_id":"f9c2298435d38d7c352b9775591abec24f8f9399"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"43f6a871205fec77348aef4a18233651e8c7a6e3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":19,"context_line":"from tempest.lib import decorators"},{"line_number":20,"context_line":"from tempest.lib import exceptions as lib_exceptions"},{"line_number":21,"context_line":"from unittest import TestCase"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_be69505b","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":29},"updated":"2020-02-17 09:40:51.000000000","message":"we don\u0027t need this import cause the base class testtools.TestCase already has a skiptest method[1]\n\n[1] https://testtools.readthedocs.io/en/latest/api.html#testtools.TestCase.skipTest","commit_id":"1bfc076146f0a9203009260d38e8c84aad479561"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"19015e5a66c0b2eb7e26bf7f9704518cd84b8a34","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":19,"context_line":"from tempest.lib import decorators"},{"line_number":20,"context_line":"from tempest.lib import exceptions as lib_exceptions"},{"line_number":21,"context_line":"from unittest import TestCase"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_8d50e92f","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":29},"in_reply_to":"3fa7e38b_be69505b","updated":"2020-02-17 14:47:30.000000000","message":"yeah, remember unittest and unittest2 skip exception are not compatible for different test runner. We have fixed it recently- https://review.opendev.org/#/c/681340/","commit_id":"1bfc076146f0a9203009260d38e8c84aad479561"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"e2116aed185f46bed31fd9b107a95efa1b22e2e5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            TestCase.skipTest(\"This test is skipped because SAVING\""},{"line_number":73,"context_line":"                              \"state of image with ID {image_id} isn\u0027t\""},{"line_number":74,"context_line":"                               \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_ae0a0275","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":29},"updated":"2020-02-07 13:11:28.000000000","message":"I am afraid we are not using this anywhere else in Tempest, and I wonder if we have a good reason for that, I\u0027ll wait to see what Gman think about this before review.","commit_id":"1bfc076146f0a9203009260d38e8c84aad479561"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"43f6a871205fec77348aef4a18233651e8c7a6e3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            TestCase.skipTest(\"This test is skipped because SAVING\""},{"line_number":73,"context_line":"                              \"state of image with ID {image_id} isn\u0027t\""},{"line_number":74,"context_line":"                               \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_fe03480f","line":72,"range":{"start_line":72,"start_character":12,"end_line":72,"end_character":29},"updated":"2020-02-17 09:40:51.000000000","message":"self.skipTest","commit_id":"1bfc076146f0a9203009260d38e8c84aad479561"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"19015e5a66c0b2eb7e26bf7f9704518cd84b8a34","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            self.skipTest(\"This test is skipped because SAVING \""},{"line_number":73,"context_line":"                          \"state of image with ID {image_id} isn\u0027t \""},{"line_number":74,"context_line":"                          \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5844ed4e","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":25},"updated":"2020-02-17 14:47:30.000000000","message":"you can use self.skipException(msg).\n\n We are good on skipException from test code. That is handled by\nteststools.TestCase\u0027s self.exception_handlers\n- https://github.com/testing-cabal/testtools/blob/f51ce5f934153e80d3e8a95b52e1464daeb30c14/testtools/testcase.py#L275\nMapped handler _report_skip() will add the respective tests to skip list.","commit_id":"cc76ac5e271b0624664131c54f1d6e84f236e71a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c3e6cfd62c9ca2964bd67c28c11d40aa6575b93c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            self.skipTest(\"This test is skipped because SAVING \""},{"line_number":73,"context_line":"                          \"state of image with ID {image_id} isn\u0027t \""},{"line_number":74,"context_line":"                          \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_b8f641d5","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":25},"in_reply_to":"3fa7e38b_5844ed4e","updated":"2020-02-17 14:54:47.000000000","message":"i see skipTest internally raising skipException[1], wont this result in the same functionality?\n\n[1] https://github.com/testing-cabal/testtools/blob/master/testtools/testcase.py#L354","commit_id":"cc76ac5e271b0624664131c54f1d6e84f236e71a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"078c15845f00dbac69b7478d2153253488cd740d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            self.skipTest(\"This test is skipped because SAVING \""},{"line_number":73,"context_line":"                          \"state of image with ID {image_id} isn\u0027t \""},{"line_number":74,"context_line":"                          \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_97545225","line":72,"range":{"start_line":72,"start_character":17,"end_line":72,"end_character":25},"in_reply_to":"3fa7e38b_b8f641d5","updated":"2020-02-19 00:35:28.000000000","message":"till now yes :) it is same. for consistency with other tests let\u0027s use self.skipException","commit_id":"cc76ac5e271b0624664131c54f1d6e84f236e71a"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"ed257f73be65f9bef92a8abb062ec3014f99a221","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            self.skipException(\"This test is skipped because SAVING \""},{"line_number":73,"context_line":"                               \"state of image with ID {image_id} isn\u0027t \""},{"line_number":74,"context_line":"                               \"captured\".format(image_id\u003dimage[\u0027id\u0027]))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"},{"line_number":77,"context_line":"    def test_create_image_from_stopped_server(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_753df927","line":74,"range":{"start_line":74,"start_character":58,"end_line":74,"end_character":63},"updated":"2020-02-20 02:12:39.000000000","message":"This variable will not exist on Exception.","commit_id":"e61aec3bfb1e7c6db5762445c8b2cc73e167f529"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f379f54347999d577760cd4127f752012ba8783c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.assertTrue(self.client.is_resource_deleted(image[\u0027id\u0027]),"},{"line_number":65,"context_line":"                            msg)"},{"line_number":66,"context_line":"            self.assertEqual(snapshot_name, image[\u0027name\u0027])"},{"line_number":67,"context_line":"        except lib_exceptions.TimeoutException:"},{"line_number":68,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_4665b5af","line":67,"range":{"start_line":67,"start_character":7,"end_line":67,"end_character":47},"updated":"2020-02-20 08:04:03.000000000","message":"You can change this to\nexcept lib_exceptions.TimeoutException as exc:\n\nand use \nself.skipException(exc) at line 73\n\nThis will log proper message including image id;","commit_id":"bf00bd5c5e47fabfa5a1924c3f6d03d0cbfa639e"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"a3459f85684ea4ea01cf646996ba65d55b5b073d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            self.skipException(\"This test is skipped because SAVING \""},{"line_number":73,"context_line":"                               \"state of image isn\u0027t \""},{"line_number":74,"context_line":"                               \"captured\")"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"},{"line_number":77,"context_line":"    def test_create_image_from_stopped_server(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_e6a141f8","line":74,"range":{"start_line":73,"start_character":0,"end_line":74,"end_character":42},"updated":"2020-02-20 07:50:44.000000000","message":"can be put in one line","commit_id":"bf00bd5c5e47fabfa5a1924c3f6d03d0cbfa639e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8d875cde5c47ccdf779725bcb906caa5d98e87a4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            # If timeout is reached, we don\u0027t need to check state,"},{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            raise self.skipException(str(ex))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_e9fa6ab9","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":79},"updated":"2020-02-20 18:32:29.000000000","message":"you can change this now to:\n\n# Hence, skip the test.","commit_id":"c0f291b125549e5288145ebb72146669dbe04a9b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8d875cde5c47ccdf779725bcb906caa5d98e87a4","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            # since, it wouldn\u0027t be a \u0027SAVING\u0027 state atleast and apart from"},{"line_number":70,"context_line":"            # it, this testcase doesn\u0027t have scope for other state transition"},{"line_number":71,"context_line":"            # Hence, we can just delete the image, if it is in any other state."},{"line_number":72,"context_line":"            raise self.skipException(str(ex))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @decorators.idempotent_id(\u0027aaacd1d0-55a2-4ce8-818a-b5439df8adc9\u0027)"},{"line_number":75,"context_line":"    def test_create_image_from_stopped_server(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_49c37e5a","line":72,"range":{"start_line":72,"start_character":41,"end_line":72,"end_character":43},"updated":"2020-02-20 18:32:29.000000000","message":"+1. ex will have detailed but can you add \"This test is skipped because\" also so that it will be clear that this test is skipped because of \u003cex\u003e.","commit_id":"c0f291b125549e5288145ebb72146669dbe04a9b"}]}
