)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"610b2ba056e2d8fe2cda2025270924250b9cbaeb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove nova v2 client in ListSnapshotImagesTest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ListSnapshotImagesTest should only use nova v3 client for creating"},{"line_number":10,"context_line":"snapshot as the similar test which uses nova v2 client already exist"},{"line_number":11,"context_line":"in nova v2 images api tests. This patch removes nova v2 client."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I04e34f7cd34f760d7bc1361a3037c1f1fe1341d8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7adec928_10f5d4ca","line":10,"updated":"2014-05-09 21:16:22.000000000","message":"Please specify exactly which test is a substitute for what is being removed here.","commit_id":"2da0c6a5316c359a95bf36b19dd97582ff839c58"}],"tempest/api/image/v1/test_images.py":[{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"3582c5ffd755e3b749f74db0996c5865e403a258","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, image \u003d cls.os.images_client.create_image("},{"line_number":288,"context_line":"                server[\u0027id\u0027], name)"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            resp, image \u003d cls.servers_client.create_image("}],"source_content_type":"text/x-python","patch_set":4,"id":"bad4c104_d5f47689","line":287,"updated":"2014-04-29 08:41:23.000000000","message":"unused variable image","commit_id":"a6640858d4be4b456c4b423ade59172872495724"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"7041e11337f7ad1de58e0dd8a0d1bfb91e229bd6","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, image \u003d cls.os.images_client.create_image("},{"line_number":288,"context_line":"                server[\u0027id\u0027], name)"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            resp, image \u003d cls.servers_client.create_image("}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_cee30b04","line":287,"in_reply_to":"bad4c104_d5f47689","updated":"2014-04-30 02:58:27.000000000","message":"Done","commit_id":"a6640858d4be4b456c4b423ade59172872495724"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ba1db59e2e4edb8836b08445c57ad55f6f7d992f","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        cls.servers.append(server)"},{"line_number":282,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":283,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, _ \u003d cls.os.images_client.create_image("}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_9cf3989d","line":284,"updated":"2014-05-04 16:14:57.000000000","message":"So I get what you\u0027re going for here, but I feel the real problem with this test is L251 in the setupclass. It should be explicit either use v3 or skip. If I remember correctly the intent of this test class was to test snapshotting with the v3 api because there is no images api proxy.\n\nThere really isn\u0027t any reason to use the v2 api in this test class. The snapshot use case is already tested with the v2 nova images client in tempest.api.compute.images.test_images.","commit_id":"2137a88b3849d00e296e625d996634de714e964c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f81f273e8d8dd3e2b3ace7c6fb48301e4ae117bf","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        cls.servers.append(server)"},{"line_number":282,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":283,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, _ \u003d cls.os.images_client.create_image("}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_fd0aba77","line":284,"in_reply_to":"9ad9bd40_455f7041","updated":"2014-05-06 01:22:56.000000000","message":"So that comment is actually only referring to preseeding the tenant with some test images. (This is to verify filtering works correctly) This test class was only added because the v3 compute api doesn\u0027t have an images api proxy. (take a look at the commit history of this file) When they Ivan was adding the first round of v3 tests I asked him to add these tests so we had analougous tests to what currently exists in tempest.api.compute.images.\n\nThe tests here that actually require compute only do so because they are looking are listing by filtering the image metadata for snapshot or server metadata. That is actually what is unique about this test class. The generic list functionality (with other metadata filtering) is provided by another class, ListImagesTest, in this file. It doesn\u0027t actually matter which nova API version is used to create the images because the tests don\u0027t care.\n\nMy recommendation to use the v3 api above was based on the original intent of this class to provide a dual of tempest/api/compute/images/test_list_image_filters.py. It also provides coverage of a code path we don\u0027t have elsewhere for the v3 api. That being said using v2 here is perfectly valid too, but I feel handling the case of either or here is not correct here. Either we require the v3 api to do the server creates, at the cost of skipping these tests when the v3 api is disabled. (which I think is prefered because of the increased coverage)  Or we just use v2, which will work fine and we don\u0027t have a skip case. (except for when nova is diabled). The disadvantage of this is we will have duplication with the existing v2 compute images api tests.\n\nHaving the fallback from v3 to v2 is just weird to me because there is no real requirement other than having a created server here. (which I guess is the reason for the fallback originally) We are just using nova to populate snapshots into glance. If you feel there is value in testing with both api versions (which I would partially disagree with, but not be -1 on) then we need to explicitly test both v3 and v2 as separate test cases. I just feel in this case we should have an explicit execute path and not try to handle ever configuration edge case in setUpClass, especially for something so simple.","commit_id":"2137a88b3849d00e296e625d996634de714e964c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"9abc1944960aa15e649108bc4d1c9b4cbf9a1fad","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        cls.servers.append(server)"},{"line_number":282,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":283,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, _ \u003d cls.os.images_client.create_image("}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_455f7041","line":284,"in_reply_to":"9ad9bd40_9cf3989d","updated":"2014-05-05 05:29:49.000000000","message":"According to the comments in setUpClass, this test class mainly tests image list of glance api. This test should be run either use nova v2 or v3. _create_snapshot is a helper function to create some images for testing. So we should have a check to decide which ceate_image should be used. Please correct me if I\u0027m wrong. Thank you!","commit_id":"2137a88b3849d00e296e625d996634de714e964c"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"2f371313eb1fce88452ff6f705117bce597568a9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        cls.servers.append(server)"},{"line_number":282,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":283,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":284,"context_line":"        if not CONF.compute_feature_enabled.api_v3:"},{"line_number":285,"context_line":"            # Instead of servers_client, nova v2 use its images_client"},{"line_number":286,"context_line":"            # to create snapshot image"},{"line_number":287,"context_line":"            resp, _ \u003d cls.os.images_client.create_image("}],"source_content_type":"text/x-python","patch_set":5,"id":"9ad9bd40_210b207e","line":284,"in_reply_to":"9ad9bd40_fd0aba77","updated":"2014-05-06 02:17:11.000000000","message":"Thank you for your detail comments! Agree with your opinion, it is duplicate with the existing v2 compute images api tests if using nova v2. I\u0027ll skip the tests when nova v3 is disabled.","commit_id":"2137a88b3849d00e296e625d996634de714e964c"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"19d5fe24ca1048ed5f48b7693ebd3925c0ba66c9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        cls.servers.append(server)"},{"line_number":288,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":289,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":290,"context_line":"        resp, _ \u003d cls.servers_client.create_image(server[\u0027id\u0027], name)"},{"line_number":291,"context_line":"        image_id \u003d data_utils.parse_image_id(resp[\u0027location\u0027])"},{"line_number":292,"context_line":"        cls.created_images.append(image_id)"},{"line_number":293,"context_line":"        cls.client.wait_for_image_status(image_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_ab8b8366","line":290,"updated":"2014-05-16 08:14:24.000000000","message":"Please, specify the reason for this change in the commit message.","commit_id":"ccdbe65532ca208381c0e73243e18cbf46bf281f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"f1e2fcf5d26b3952cea243cf17c5de8cfe2e000e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        cls.servers.append(server)"},{"line_number":288,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":289,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":290,"context_line":"        resp, _ \u003d cls.servers_client.create_image(server[\u0027id\u0027], name)"},{"line_number":291,"context_line":"        image_id \u003d data_utils.parse_image_id(resp[\u0027location\u0027])"},{"line_number":292,"context_line":"        cls.created_images.append(image_id)"},{"line_number":293,"context_line":"        cls.client.wait_for_image_status(image_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_cbd52f1d","line":290,"in_reply_to":"7adec928_ab8b8366","updated":"2014-05-16 08:31:03.000000000","message":"This patch\u0027s major goal is to close bug #1311712. I think the commit message is clear for that. This line is a very simple change as variable \u0027image\u0027 is not used. So I think it\u0027s fine that we don\u0027t add it into commit message.","commit_id":"ccdbe65532ca208381c0e73243e18cbf46bf281f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"3f8ec2cf33d81d34c05d29fa9766836780183973","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        cls.servers.append(server)"},{"line_number":288,"context_line":"        cls.servers_client.wait_for_server_status("},{"line_number":289,"context_line":"            server[\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":290,"context_line":"        resp, _ \u003d cls.servers_client.create_image(server[\u0027id\u0027], name)"},{"line_number":291,"context_line":"        image_id \u003d data_utils.parse_image_id(resp[\u0027location\u0027])"},{"line_number":292,"context_line":"        cls.created_images.append(image_id)"},{"line_number":293,"context_line":"        cls.client.wait_for_image_status(image_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_ab7c63b6","line":290,"in_reply_to":"7adec928_cbd52f1d","updated":"2014-05-16 09:09:43.000000000","message":"Ok, I understood your point.","commit_id":"ccdbe65532ca208381c0e73243e18cbf46bf281f"}],"tempest/services/compute/json/servers_client.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"7b1f974b629d465aa6c18c661b9046cce9e64d9b","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        return self.action(server_id, \u0027os-start\u0027, None, **kwargs)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def create_image(self, server_id, name):"},{"line_number":322,"context_line":"        return self.action(server_id, \u0027createImage\u0027, None, name\u003dname)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def attach_volume(self, server_id, volume_id, device\u003d\u0027/dev/vdz\u0027):"},{"line_number":325,"context_line":"        \"\"\"Attaches a volume to a server instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F5wk%3D","line":322,"updated":"2014-04-25 12:26:51.000000000","message":"Please, add response_key\u003dNone instead of None for more clarity","commit_id":"cc760cbf92a18c7591cc2f9498d42b2d136dcf5c"}]}
