)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a0e9507637594ac226752dab1c2e580a09100972","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change rebuild tests to use image_ref"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some tests fail incorrectly if image_ref_alt is null, they should"},{"line_number":10,"context_line":"use image_ref instead, as that\u0027s going to be filled in."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4df2175ecf0fe231e29332cfb48c12d20e36b527"},{"line_number":13,"context_line":"Closes-Bug: #1664291"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba2be162_4a5c8fed","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":55},"updated":"2017-03-01 19:18:15.000000000","message":"This seems to add one more negative factor to the existing negative test. The error status code will depend on Nova behavior which factor is checked first..","commit_id":"589028a83f9833b3e6ea70a709a672679d20e488"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"46cb72db13f5bb22a3365adb13ca812444305d9e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Change rebuild tests to use image_ref"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some tests fail incorrectly if image_ref_alt is null, they should"},{"line_number":10,"context_line":"use image_ref instead, as that\u0027s going to be filled in."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4df2175ecf0fe231e29332cfb48c12d20e36b527"},{"line_number":13,"context_line":"Closes-Bug: #1664291"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba2be162_5f388cef","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":55},"in_reply_to":"ba2be162_4a5c8fed","updated":"2017-03-02 18:56:40.000000000","message":"Oh, the above my comment is wrong.\nNova doesn\u0027t check the specified image-id as the same as the original image of the server.\nNova just rebuilds a server with the specified image-id for clean server again.\nSo current patch is good for me.","commit_id":"589028a83f9833b3e6ea70a709a672679d20e488"}],"tempest/api/compute/servers/test_servers_negative.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"251b09ad9f16acb7b040737d7741dc8ee0470157","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":170,"context_line":"    @decorators.idempotent_id(\u002798fa0458-1485-440f-873b-fe7f0d714930\u0027)"},{"line_number":171,"context_line":"    @decorators.skip_unless_attr(\u0027multiple_images\u0027, \u0027Only one image found\u0027)"},{"line_number":172,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":173,"context_line":"        # Rebuild a deleted server"},{"line_number":174,"context_line":"        server \u003d self.create_test_server()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_e31b7b19","line":171,"updated":"2017-02-13 16:48:30.000000000","message":"Could you use something like @testtools.skipUnless(conf.image_ref !\u003d conf.image_ref_al) instead please ?","commit_id":"c2fa4423ea0176a512a822b3c80a6d4beaad4b50"},{"author":{"_account_id":9194,"name":"Emily Hugenbruch","email":"ekhugenbruch@us.ibm.com","username":"ekhugen"},"change_message_id":"25b55e521655f0b13e2750af153d43e45d02f0d1","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":170,"context_line":"    @decorators.idempotent_id(\u002798fa0458-1485-440f-873b-fe7f0d714930\u0027)"},{"line_number":171,"context_line":"    @decorators.skip_unless_attr(\u0027multiple_images\u0027, \u0027Only one image found\u0027)"},{"line_number":172,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":173,"context_line":"        # Rebuild a deleted server"},{"line_number":174,"context_line":"        server \u003d self.create_test_server()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_2605a179","line":171,"in_reply_to":"fa31d9ce_e31b7b19","updated":"2017-02-13 17:13:16.000000000","message":"Sure, I was just basing it on the skip in test_list_server_filters, but updated in new patch.  I guess we won\u0027t really have to worry about the case where both image_ref and image_ref_alt are null since that\u0027s probably not a valid environment?","commit_id":"c2fa4423ea0176a512a822b3c80a6d4beaad4b50"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"a50f9871b7b615b018f2da1011aea48279a9a5d1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        super(ServersNegativeTestJSON, cls).resource_setup()"},{"line_number":54,"context_line":"        server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":55,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":56,"context_line":"        if cls.image_ref !\u003d cls.image_ref_alt:"},{"line_number":57,"context_line":"            cls.multiple_images \u003d True"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            cls.multiple_images \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa31d9ce_51eeb8b4","line":56,"updated":"2017-02-14 07:35:52.000000000","message":"How about adding \u0027cls.image_ref and cls.image_ref_alt\u0027 as condition to consider None case here?","commit_id":"cb8ed79f794bf3092e6695f8e77563de0526780d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e13d65911bff69c9079861c365e82c61edbf5cc2","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":174,"context_line":"    @decorators.idempotent_id(\u002798fa0458-1485-440f-873b-fe7f0d714930\u0027)"},{"line_number":175,"context_line":"    @decorators.skip_unless_attr(\u0027multiple_images\u0027, \u0027Only one image found\u0027)"},{"line_number":176,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":177,"context_line":"        # Rebuild a deleted server"},{"line_number":178,"context_line":"        server \u003d self.create_test_server()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_d1052f11","line":175,"updated":"2017-02-14 16:16:02.000000000","message":"Please stick with the skipUnless decorator. There\u0027s no need to consider case where both image_ref_alt and image_ref are \"\" because that obviously makes no sense.\n\nI am going to remove the usage of this skip_unless_attr decorator because it\u0027s useless (you can do what you want with skipUnless/skipIf already) and encourage bad practice: class variables (like your cls.multiple_images) are bad.\n\nSorry for the disagreement.","commit_id":"9722586af1236148a854978da81698f5b00c1e78"},{"author":{"_account_id":9194,"name":"Emily Hugenbruch","email":"ekhugenbruch@us.ibm.com","username":"ekhugen"},"change_message_id":"0df5516187668eccb6b4162826bd1721d25a37f0","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":174,"context_line":"    @decorators.idempotent_id(\u002798fa0458-1485-440f-873b-fe7f0d714930\u0027)"},{"line_number":175,"context_line":"    @decorators.skip_unless_attr(\u0027multiple_images\u0027, \u0027Only one image found\u0027)"},{"line_number":176,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":177,"context_line":"        # Rebuild a deleted server"},{"line_number":178,"context_line":"        server \u003d self.create_test_server()"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_e41b4cc8","line":175,"in_reply_to":"fa31d9ce_d1052f11","updated":"2017-02-14 17:34:46.000000000","message":"Done","commit_id":"9722586af1236148a854978da81698f5b00c1e78"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"050b3cb44c2552262dc38cdbc4939286d8f23192","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_a795d687","line":174,"updated":"2017-02-14 17:43:02.000000000","message":"This test used to run in the job gate-tempest-dsvm-neutron-full-ubuntu-xenial, now it\u0027s skipped. Aren\u0027t we losing coverage here ?","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1333db197f4d070746af7d9b8f61b7d156a3ecf9","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_f42473b3","line":174,"in_reply_to":"da36d5c6_5802160b","updated":"2017-02-28 02:32:37.000000000","message":"yes, you are right. we can remove the skip checks and doing rebuild with image_ref is something make sure image bits are all right here and 404 is really from rebuilding deleted server.\n\nON bad image id test, we have those in other place so here doing for deleted server should be ok.","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":9194,"name":"Emily Hugenbruch","email":"ekhugenbruch@us.ibm.com","username":"ekhugen"},"change_message_id":"32c421ad353bbebe2318c3d52fb6126461b4130b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_bf51cbda","line":174,"in_reply_to":"da36d5c6_f42473b3","updated":"2017-03-01 18:53:45.000000000","message":"Done","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":9194,"name":"Emily Hugenbruch","email":"ekhugenbruch@us.ibm.com","username":"ekhugen"},"change_message_id":"a6ddff503abab4025987cb2ce5bc501d652916d0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_5802160b","line":174,"in_reply_to":"fa31d9ce_50c03650","updated":"2017-02-24 20:04:56.000000000","message":"So the reason I opened this bug was actually because I ran into #2.  Do I understand right that the fix here should be to abandon the skip check because it could skip in the case of a bad image id, which is a case we want to test for?  And instead change it to use image_ref, which would try to rebuild the deleted server with the same image it was originally built with (because what image we use here doesn\u0027t matter to the test)?  Thanks.","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":9194,"name":"Emily Hugenbruch","email":"ekhugenbruch@us.ibm.com","username":"ekhugen"},"change_message_id":"f7c145ddf36790c4056990ee99fcfa23f7d760eb","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_ada21797","line":174,"in_reply_to":"fa31d9ce_a795d687","updated":"2017-02-14 18:30:22.000000000","message":"Should I change the skip to just check that image_ref_alt isn\u0027t blank?  Is the problem that the gate job runs with image_ref_alt \u003d image_ref?","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"96ea4f0a8544b24d195d05ab0c9ad7f1197071ca","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_b337bffd","line":174,"in_reply_to":"fa31d9ce_ada21797","updated":"2017-02-15 09:51:04.000000000","message":"You have to understand what\u0027s the \"spirit\" of the test, what it actually does. Is the lib_exc.NotFound raised because the server is deleted ? Or because the image doesn\"t exist ?\n\nIf it\u0027s the former, then you can pass whatever value (even bogus) to self.client.rebuild_server() because the actual image won\"t even be checked. In that case there\u0027s no reason to skip the test.","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"92339811cbf6336b3393bf44e695c9ee3c6f18bc","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":172,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":173,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":174,"context_line":"    def test_rebuild_deleted_server(self):"},{"line_number":175,"context_line":"        # Rebuild a deleted server"},{"line_number":176,"context_line":"        server \u003d self.create_test_server()"},{"line_number":177,"context_line":"        self.client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_50c03650","line":174,"in_reply_to":"fa31d9ce_b337bffd","updated":"2017-02-15 10:25:59.000000000","message":"yea thats true.\n\nwe actually do not need those skip condition for this tests. 1. Nova does not complain if rebuilding on same image\n2. Nova return 400 if invalid image uuid is passed (like \u0027\u0027)\n3. Yes 404 can be from image non existence also.\n\nhere 1 \u0026 2 cases all ok but 3rd one is something can happen and make this tests false pass.\n\nto solve that we can use self.image_ref instead of self.image_ref_alt @L182. So that we know self.image_ref is something present for sure as server is build from that and this tests actually 404 for deleted server rebuild request","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"92339811cbf6336b3393bf44e695c9ee3c6f18bc","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    @test.attr(type\u003d[\u0027negative\u0027])"},{"line_number":197,"context_line":"    @decorators.idempotent_id(\u0027d86141a7-906e-4731-b187-d64a2ea61422\u0027)"},{"line_number":198,"context_line":"    @testtools.skipUnless(CONF.compute.image_ref !\u003d CONF.compute.image_ref_alt"},{"line_number":199,"context_line":"                          and CONF.compute.image_ref_alt !\u003d \"\","},{"line_number":200,"context_line":"                          \u0027Only one image found\u0027)"},{"line_number":201,"context_line":"    def test_rebuild_non_existent_server(self):"},{"line_number":202,"context_line":"        # Rebuild a non existent server"},{"line_number":203,"context_line":"        nonexistent_server \u003d data_utils.rand_uuid()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_b07fb213","line":200,"range":{"start_line":198,"start_character":0,"end_line":200,"end_character":49},"updated":"2017-02-15 10:25:59.000000000","message":"ditto. and same for other tests where image_ref does not matter","commit_id":"67e5eec5d88b15f87975de647a3af9a3bce2f8d7"}]}
