)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"75ffb5245d0db43f84e496532c5ee81aa60548bc","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests for new add location api of glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/tempest/+/891026"},{"line_number":10,"context_line":"Change-Id: I1b06e770d13b71becae36b5e4babec284d3e6ce5"},{"line_number":11,"context_line":"Signed-off-by: PranaliD \u003cpdeore@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"dbcc7328_69438e6c","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":67},"updated":"2026-02-24 08:24:47.000000000","message":"also not sure why this has dependency on self","commit_id":"303b0988d8f15e381c498b499ead7511637083e9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests for new add location api of glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/tempest/+/891026"},{"line_number":10,"context_line":"Change-Id: I1b06e770d13b71becae36b5e4babec284d3e6ce5"},{"line_number":11,"context_line":"Signed-off-by: PranaliD \u003cpdeore@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"8666d8a3_511e9e44","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":67},"in_reply_to":"c3bf8f2c_e8926895","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"303b0988d8f15e381c498b499ead7511637083e9"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3543820f2b48f57332eb4dd4e02d6001a3a3d6fa","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests for new add location api of glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/tempest/+/891026"},{"line_number":10,"context_line":"Change-Id: I1b06e770d13b71becae36b5e4babec284d3e6ce5"},{"line_number":11,"context_line":"Signed-off-by: PranaliD \u003cpdeore@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"c3bf8f2c_e8926895","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":67},"in_reply_to":"dbcc7328_69438e6c","updated":"2026-02-25 12:08:03.000000000","message":"wrong copy-paste 😞","commit_id":"303b0988d8f15e381c498b499ead7511637083e9"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"9fd08c8e15bba9b1451b1b17520f5d0bdf643ee1","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     PranaliD \u003cpdeore@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-03-23 15:04:30 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests for new add location api of glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1b06e770d13b71becae36b5e4babec284d3e6ce5"},{"line_number":10,"context_line":"Signed-off-by: PranaliD \u003cpdeore@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"6a97caf3_a5c3a942","line":7,"updated":"2026-03-23 17:06:36.000000000","message":"I think it will be worth adding a detailed commit message in case you find a need to upload another patch","commit_id":"0dd6d79be6e72569b89b1a4a3ac04be0e2ec4d59"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"653a502a3889bd7db5facf6b3a27e6a01e2e35ba","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     PranaliD \u003cpdeore@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-03-23 15:04:30 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests for new add location api of glance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1b06e770d13b71becae36b5e4babec284d3e6ce5"},{"line_number":10,"context_line":"Signed-off-by: PranaliD \u003cpdeore@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"ddf22094_8367e671","line":7,"in_reply_to":"6a97caf3_a5c3a942","updated":"2026-04-01 13:20:03.000000000","message":"Done","commit_id":"0dd6d79be6e72569b89b1a4a3ac04be0e2ec4d59"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a584ed4c5cecbbeb24b339f6783704c1a17321e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"16266769_adaa7d0e","updated":"2023-08-28 05:38:32.000000000","message":"recheck","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"c5fc6a312d3144c41b3f166af5ac21b8b32956d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"482e199a_23d5b0f0","updated":"2023-08-28 06:01:07.000000000","message":"recheck","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2a4dc66ee3546dd0d6433e6224d11ba787427a34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"34f5e08b_4b03f20d","updated":"2023-09-21 06:45:36.000000000","message":"recheck","commit_id":"75405154196251999de0b1e12903687b30a5520a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e21df4a9a20014b9dc17f4111a23c65019986edc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d9566c73_9b4b3bd6","updated":"2024-02-22 12:36:28.000000000","message":"this needs rebase on priority","commit_id":"12e9cb312396c6ae1029c9f1f0e373e8d5bd9a37"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d19fc2aad54498117d131754001c3466aab66f3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c2e3b33c_589768ee","updated":"2024-02-26 09:17:49.000000000","message":"recheck deps updated","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2ac82529_b19b450e","updated":"2024-08-06 14:20:40.000000000","message":"Thanks for the review Abhishek!","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"8d2f5e0e42e3626e94eb92448ffc0ecc2bc9abc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"91b7226b_700f5fe7","updated":"2025-06-11 08:36:26.000000000","message":"recheck","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"414b3d7983f81b7ff14c717e2a2153ba9a5bd666","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"45c3e81f_8309f66f","updated":"2026-01-15 10:28:44.000000000","message":"I think you need a DNM glance patch to verify this test passes","commit_id":"1eb383cefdd6cdd9940d72c6b6c17967bab8b099"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"727d40b9477c2ca0a160013fccd3f3512a72ce63","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7787a06d_f86020de","updated":"2026-01-15 08:14:38.000000000","message":"patch rebased, ready for review !","commit_id":"1eb383cefdd6cdd9940d72c6b6c17967bab8b099"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"4daed34c35d7baacbb1f58b103ac1568f41a7813","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"63bcb583_d6c61aff","in_reply_to":"45c3e81f_8309f66f","updated":"2026-01-16 10:03:28.000000000","message":"Done. https://review.opendev.org/c/openstack/glance/+/973576","commit_id":"1eb383cefdd6cdd9940d72c6b6c17967bab8b099"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"76c94efd_5f3bbda7","updated":"2026-02-17 13:09:03.000000000","message":"As nova and cinder are using new location apis I think you should add instance snapsot and volume upload to image cases as well to verify hash and checksum is calculated properly","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"73d1bbeeff1228fff1f1421f737bde6670755df7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"af8b5bcc_a3999a65","in_reply_to":"1fac3040_64b323ec","updated":"2026-02-24 08:23:23.000000000","message":"I think those should be added on priority as nova and cinder will be more using this feature than glance. Nobody configures http store in deployments so no point of having these tests for glance and not for cinder and nova scenarios.","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"1fac3040_64b323ec","in_reply_to":"76c94efd_5f3bbda7","updated":"2026-02-23 07:27:38.000000000","message":"I think this scenario test should go in separate patch as we are having only glance specific tests here.","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3543820f2b48f57332eb4dd4e02d6001a3a3d6fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"6d3e8dee_87ac9ad1","in_reply_to":"af8b5bcc_a3999a65","updated":"2026-02-25 12:08:03.000000000","message":"Adding in the same patch.","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"cb143ff7_8e765977","updated":"2026-02-23 07:27:38.000000000","message":"Thanks for the review ! I have tried to address you comments.","commit_id":"49da7be3753ff94af53d4070030349b28ddbbf8a"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"3543820f2b48f57332eb4dd4e02d6001a3a3d6fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"1091d131_7cdef48a","updated":"2026-02-25 12:08:03.000000000","message":"Thanks for the review Abhishek!","commit_id":"319b71f070fad51d7033aca299e538e2499f2f46"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5df5106926913fffc42310625b41cf7fb6ed86cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e9952e17_a4a20b75","updated":"2026-02-27 07:51:12.000000000","message":"Please put a DNM url here where we can see these tests are executed and passing, rest looks good to me.\n\nThank you","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"47c0fb548da753ef53f1de4cfec1cef3e4122347","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"7710d239_931f22d5","updated":"2026-03-23 06:44:07.000000000","message":"recheck","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"dd9c740d98931ebbaef3321ff418dfc77898ac20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"388d09a7_cedd1c63","updated":"2026-03-23 08:03:50.000000000","message":"soft -1 to fix some comments inline","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b25395e49a0d34748f8b33e76f05835d390c0b88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"15bf1d0e_39a445ab","in_reply_to":"e2f5d11f_67c4a026","updated":"2026-03-09 13:33:07.000000000","message":"tempest.api.image.v2.test_images.LocationImportTest\t       2\t1\t0\t0\t1       Detail\t\ntest_add_location_for_image_with_do_secure_hash_true[id-9ca1b69e-375e-11ee-be56-0242ac120002]   pass\ntest_add_location_with_do_secure_hash_false[id-b6963da4-375e-11ee-be56-0242ac120002]   skip\n\n\ntempest.api.image.v2.test_images.MultistoreLocationImportTest\t2\t1\t0\t0\t1\tDetail\t\ntest_add_location_for_image_with_do_secure_hash_true[id-3f84b819-0df8-4f81-af30-7c2d4e242bc9]   pass\ntest_add_location_with_do_secure_hash_false[id-507ecfef-9e1c-40c0-b801-64bf00a71ab2]   skip","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"638014d87a1df81323ca320fee1fd17a4d8cefc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"e2f5d11f_67c4a026","in_reply_to":"e9952e17_a4a20b75","updated":"2026-03-02 10:08:41.000000000","message":"Tests are running here : https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_d13/openstack/d1391e0f06f14d9a9adb6de061e9ba4d/testr_results.html","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"93d09ec72937b09b93d1a6b59d0242fc12f2d6cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a674fa43_86dd2df5","updated":"2026-03-23 08:54:01.000000000","message":"Ashish, Thanks for the review !","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"7b0a956c6194c225f96f41b2658cdb6041ed1f95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"f5dc8025_b0cb5c69","updated":"2026-03-23 13:00:40.000000000","message":"Thank you @pdeore@redhat.com for addressing the comments. Added a few more so that the failing tox-doc job passes","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"d0babe33_116a79c9","updated":"2026-03-23 13:13:34.000000000","message":"ok done, let\u0027s see :) Thanks again!","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"3ae1a239426e7e2fa076934f07443ab1001b0b74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"ecafa40f_4b940d0c","updated":"2026-03-23 15:54:22.000000000","message":"cool thanks, passed now https://zuul.opendev.org/t/openstack/build/4daa5d6e685045aca44522b074f48dae","commit_id":"0dd6d79be6e72569b89b1a4a3ac04be0e2ec4d59"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"e0d1d396_f9ad91b3","updated":"2026-04-01 20:41:24.000000000","message":"Thanks for adding tests, scenario test lgtm but few comments for API tests.\n\nI can see scenario test passing fine\n- https://zuul.opendev.org/t/openstack/build/35b7e64e55c644829ce4eac2ec68b04f/log/job-output.txt#23822-23823\n\nbut we need the API tests to run somewhere, they are skipped in tempest gate\n- https://zuul.opendev.org/t/openstack/build/fff6e8127c7245ae91f2fc458197d3f7/log/job-output.txt#23726-23729\n\nFor API tests, I rechecked in https://review.opendev.org/c/openstack/glance/+/973576 but once you update this change, please recheck there again to see the results","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"712c0dff_ef690443","in_reply_to":"e0d1d396_f9ad91b3","updated":"2026-04-06 08:54:06.000000000","message":"Thanks for the review gmann! I have addressed your inline comments in the updated patch set. The API tests have been refactored as suggested. I will recheck on https://review.opendev.org/c/openstack/glance/+/973576 once modified the job by which will run do_secure_hash \u003d false tests","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"b173078bbf6d2aef5eb4c1a07db73ff892a30508","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"a4deaa7f_32c15b30","updated":"2026-04-07 12:28:35.000000000","message":"I noticed a potential issue with requests.get missing timeouts. If there is an issue with the url, I worry that the test may hang indefinitely since requests.get has no timeout by default.","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93976bd558413ea187a4753f687775ea5149d731","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"0dcff18b_b47ad749","updated":"2026-04-08 19:41:12.000000000","message":"almost lgtm but we need to see if any job can run do_secure_hash\u003dFalse case or write test for do_secure_hash\u003dTrue only","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"904a538bb82951fe71adfa85dd6d885e967e7d36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"ca9c33d6_34f075cc","updated":"2026-04-29 00:15:07.000000000","message":"I think this need more work as the one of the new API tests added in this change not running anywhere and one test is failing in multistore job. \n\nScenario tests in glance-s3-multistore is failing:\n\nhttps://zuul.opendev.org/t/openstack/build/067d5a0d595042d3b6f4314333e2f5da/log/job-output.txt#23681","commit_id":"2fba3259880fa3f4961ea85872f97e6d203503ca"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"a385189766429e91a8a9c65af5577933f0d4a85a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"4bfd7aff_a3907538","updated":"2026-04-13 13:17:49.000000000","message":"Thank you for addressing my concerns! The change is well structured and commented, LGTM","commit_id":"2fba3259880fa3f4961ea85872f97e6d203503ca"}],"tempest/api/image/v2/test_images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":328,"context_line":"            skip_msg \u003d ("},{"line_number":329,"context_line":"                \u0027%s skipped as multiple stores are avalible\u0027"},{"line_number":330,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":331,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":332,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":333,"context_line":"            # API is not new enough to support add location API"},{"line_number":334,"context_line":"            skip_msg \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"242555b7_65a7145f","line":331,"updated":"2023-08-28 08:15:29.000000000","message":"I am doubtful about this check, since get_available_stores will raise not found exception if multiple stores are not enabled.\n\nThat means this test will always fail if single store is enabled in the deployment.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d5c428127f687c417822012c20d6097ccad82f14","unresolved":true,"context_lines":[{"line_number":328,"context_line":"            skip_msg \u003d ("},{"line_number":329,"context_line":"                \u0027%s skipped as multiple stores are avalible\u0027"},{"line_number":330,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":331,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":332,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":333,"context_line":"            # API is not new enough to support add location API"},{"line_number":334,"context_line":"            skip_msg \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"dc231356_776aa3b6","line":331,"in_reply_to":"242555b7_65a7145f","updated":"2023-08-30 14:00:03.000000000","message":"ohh ok, removing it.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"df44b055109241598b9dbc13fec9d43d1419717b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            skip_msg \u003d ("},{"line_number":329,"context_line":"                \u0027%s skipped as multiple stores are avalible\u0027"},{"line_number":330,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":331,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":332,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":333,"context_line":"            # API is not new enough to support add location API"},{"line_number":334,"context_line":"            skip_msg \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"11e2475e_7f5a3ba1","line":331,"in_reply_to":"dc231356_776aa3b6","updated":"2023-08-31 09:54:18.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                \u0027%s skipped as multiple stores are avalible\u0027"},{"line_number":330,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":331,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":332,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":333,"context_line":"            # API is not new enough to support add location API"},{"line_number":334,"context_line":"            skip_msg \u003d ("},{"line_number":335,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":336,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":339,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":3,"id":"3161e2ea_842eed30","line":336,"range":{"start_line":332,"start_character":8,"end_line":336,"end_character":45},"updated":"2023-08-28 08:15:29.000000000","message":"ideally this should be checked 1st","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d5c428127f687c417822012c20d6097ccad82f14","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                \u0027%s skipped as multiple stores are avalible\u0027"},{"line_number":330,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":331,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":332,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":333,"context_line":"            # API is not new enough to support add location API"},{"line_number":334,"context_line":"            skip_msg \u003d ("},{"line_number":335,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":336,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":339,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":3,"id":"a1efbfe3_a447e96d","line":336,"range":{"start_line":332,"start_character":8,"end_line":336,"end_character":45},"in_reply_to":"3161e2ea_842eed30","updated":"2023-08-30 14:00:03.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":341,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":342,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":343,"context_line":"        uuid \u003d \u002700000000-1111-2222-3333-444455556666\u0027"},{"line_number":344,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":345,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":346,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"20e7214d_797650cb","line":343,"range":{"start_line":343,"start_character":16,"end_line":343,"end_character":52},"updated":"2023-08-28 08:15:29.000000000","message":"This is how race conditions are introduced.\nSince these tests runs parallel i think same image is created with same id for multistore case as well. This might cause either of the test can use the other image or other test fails with image with id already exist.\n\nyou can use data_utils.rand_uuid instead.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"338c101217ad187b589cae6da991846dcc8f3096","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":341,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":342,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":343,"context_line":"        uuid \u003d \u002700000000-1111-2222-3333-444455556666\u0027"},{"line_number":344,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":345,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":346,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"2ed96215_893d0fb0","line":343,"range":{"start_line":343,"start_character":16,"end_line":343,"end_character":52},"in_reply_to":"20e7214d_797650cb","updated":"2023-08-28 08:29:16.000000000","message":"Ignore this since it is not used as image id, so no same image is created with same id.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"df44b055109241598b9dbc13fec9d43d1419717b","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":341,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":342,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":343,"context_line":"        uuid \u003d \u002700000000-1111-2222-3333-444455556666\u0027"},{"line_number":344,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":345,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":346,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ade9ce9_c60ea5d4","line":343,"range":{"start_line":343,"start_character":16,"end_line":343,"end_character":52},"in_reply_to":"2ed96215_893d0fb0","updated":"2023-08-31 09:54:18.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        # Add location with invalid validation_data"},{"line_number":423,"context_line":"        # (wrong hash value in validation data)."},{"line_number":424,"context_line":"        # Image will be reverted to queued state from importing"},{"line_number":425,"context_line":"        # Create an image 2"},{"line_number":426,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":427,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":428,"context_line":"        validation_data \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"bcf72819_df5024cf","line":425,"range":{"start_line":424,"start_character":9,"end_line":425,"end_character":27},"updated":"2023-08-28 08:15:29.000000000","message":"are you validating anywhere that image is in importing state before reverting it?","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"03d2df3336f79f2a90955fe5265ac678f6b1c5c6","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        # Add location with invalid validation_data"},{"line_number":423,"context_line":"        # (wrong hash value in validation data)."},{"line_number":424,"context_line":"        # Image will be reverted to queued state from importing"},{"line_number":425,"context_line":"        # Create an image 2"},{"line_number":426,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":427,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":428,"context_line":"        validation_data \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ae813679_a74738d9","line":425,"range":{"start_line":424,"start_character":9,"end_line":425,"end_character":27},"in_reply_to":"253af593_31835e07","updated":"2023-10-19 07:19:48.000000000","message":"Well, I tried to check for the status \u0027importing\u0027 here but seems like with the given location url the checksum \u0026 hash calculation executes fast and image status reverted back \u0027queued\u0027 from \u0027importing\u0027 immediately, so looks difficult to verify the status to importing in this scenario.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"df44b055109241598b9dbc13fec9d43d1419717b","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        # Add location with invalid validation_data"},{"line_number":423,"context_line":"        # (wrong hash value in validation data)."},{"line_number":424,"context_line":"        # Image will be reverted to queued state from importing"},{"line_number":425,"context_line":"        # Create an image 2"},{"line_number":426,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":427,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":428,"context_line":"        validation_data \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"253af593_31835e07","line":425,"range":{"start_line":424,"start_character":9,"end_line":425,"end_character":27},"in_reply_to":"bcf72819_df5024cf","updated":"2023-08-31 09:54:18.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":505,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":506,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":507,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":508,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"class MultistoreLocationImportTest(base.BaseV2ImageTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a0ae4c3_56d33932","line":508,"updated":"2023-08-28 08:15:29.000000000","message":"I think you should have one more test with do secure hash is false and no validation data provided to ensure checksum and other properties are not set but image is active.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d5c428127f687c417822012c20d6097ccad82f14","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":506,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":507,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":508,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"class MultistoreLocationImportTest(base.BaseV2ImageTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fca5c4bd_225dd999","line":508,"in_reply_to":"1a0ae4c3_56d33932","updated":"2023-08-30 14:00:03.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":520,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":521,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":522,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":523,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":524,"context_line":"            # API is not new enough to support add location API"},{"line_number":525,"context_line":"            skip_msg \u003d ("},{"line_number":526,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":527,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    @decorators.idempotent_id(\u00273f84b819-0df8-4f81-af30-7c2d4e242bc9\u0027)"},{"line_number":530,"context_line":"    @testtools.skipIf("},{"line_number":531,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"69a976ea_78d86d86","line":528,"range":{"start_line":523,"start_character":8,"end_line":528,"end_character":0},"updated":"2023-08-28 08:15:29.000000000","message":"ditto","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d5c428127f687c417822012c20d6097ccad82f14","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":521,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":522,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":523,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":524,"context_line":"            # API is not new enough to support add location API"},{"line_number":525,"context_line":"            skip_msg \u003d ("},{"line_number":526,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":527,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    @decorators.idempotent_id(\u00273f84b819-0df8-4f81-af30-7c2d4e242bc9\u0027)"},{"line_number":530,"context_line":"    @testtools.skipIf("},{"line_number":531,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"20d88693_5e805b49","line":528,"range":{"start_line":523,"start_character":8,"end_line":528,"end_character":0},"in_reply_to":"69a976ea_78d86d86","updated":"2023-08-30 14:00:03.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":531,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":532,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":533,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":534,"context_line":"        uuid \u003d \u002700000000-1111-2222-3333-444455556666\u0027"},{"line_number":535,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":536,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":537,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"b2de9bcd_65de81f7","line":534,"range":{"start_line":534,"start_character":16,"end_line":534,"end_character":52},"updated":"2023-08-28 08:15:29.000000000","message":"you can use data_utils.rand_uuid here.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d5c428127f687c417822012c20d6097ccad82f14","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":532,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":533,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":534,"context_line":"        uuid \u003d \u002700000000-1111-2222-3333-444455556666\u0027"},{"line_number":535,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":536,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":537,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"69c5c9a4_e59c3ac0","line":534,"range":{"start_line":534,"start_character":16,"end_line":534,"end_character":52},"in_reply_to":"b2de9bcd_65de81f7","updated":"2023-08-30 14:00:03.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":653,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":654,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":655,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":658,"context_line":"    @testtools.skipIf("},{"line_number":659,"context_line":"        CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"cf022c0c_02780517","line":656,"updated":"2023-08-28 08:15:29.000000000","message":"I think you can avoid using lots of duplicate code by moving it to common function since same validation/functionality is for single or multiple store.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5c6a86b86f653438b324ac5817e37f4b8cf043f7","unresolved":true,"context_lines":[{"line_number":653,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":654,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":655,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":658,"context_line":"    @testtools.skipIf("},{"line_number":659,"context_line":"        CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"c45f2274_59b2df00","line":656,"in_reply_to":"45d5af1e_cf585e9e","updated":"2024-07-31 05:29:18.000000000","message":"Is this fixed?","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"aa060251f33c17ee7806b3c344d357080d2d9446","unresolved":false,"context_lines":[{"line_number":653,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":654,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":655,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":658,"context_line":"    @testtools.skipIf("},{"line_number":659,"context_line":"        CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"e11130a4_9f00a20a","line":656,"in_reply_to":"c45f2274_59b2df00","updated":"2024-08-01 11:30:49.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"df44b055109241598b9dbc13fec9d43d1419717b","unresolved":true,"context_lines":[{"line_number":653,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":654,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":655,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":658,"context_line":"    @testtools.skipIf("},{"line_number":659,"context_line":"        CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":3,"id":"45d5af1e_cf585e9e","line":656,"in_reply_to":"cf022c0c_02780517","updated":"2023-08-31 09:54:18.000000000","message":"yeah i\u0027ll do that in next PS","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cb9222c67d375c5a1f69d65d231c7238ac306725","unresolved":true,"context_lines":[{"line_number":684,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":685,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"class MultiStoresImportImagesTest(base.BaseV2ImageTest):"},{"line_number":689,"context_line":"    \"\"\"Test importing image in multiple stores\"\"\""},{"line_number":690,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"51a375cb_e5f5740b","line":687,"updated":"2023-08-28 08:15:29.000000000","message":"missing case for do secure has is false and no validation data provided.","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"df44b055109241598b9dbc13fec9d43d1419717b","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":685,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"class MultiStoresImportImagesTest(base.BaseV2ImageTest):"},{"line_number":689,"context_line":"    \"\"\"Test importing image in multiple stores\"\"\""},{"line_number":690,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"0dfb3955_c9d03f02","line":687,"in_reply_to":"51a375cb_e5f5740b","updated":"2023-08-31 09:54:18.000000000","message":"Done","commit_id":"8418f22fc9430577db1c018d5b98d1bb1e5301d2"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"a337d968d808f8b8b867786c7999da5b312e5a76","unresolved":true,"context_lines":[{"line_number":317,"context_line":"        self.client.wait_for_resource_deletion(image_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class LocationImportTest(base.BaseV2ImageTest):"},{"line_number":321,"context_line":"    \"\"\"Here we test the new location apis for image with single store"},{"line_number":322,"context_line":"       enabled for glance"},{"line_number":323,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"00e5c9e5_9bc1f5e5","line":320,"range":{"start_line":320,"start_character":6,"end_line":320,"end_character":24},"updated":"2024-02-26 11:24:57.000000000","message":"Should the separate negative tests from positive?","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":34510,"name":"Maxim Sava","email":"msava@redhat.com","username":"msava@redhat.com"},"change_message_id":"a337d968d808f8b8b867786c7999da5b312e5a76","unresolved":true,"context_lines":[{"line_number":317,"context_line":"        self.client.wait_for_resource_deletion(image_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class LocationImportTest(base.BaseV2ImageTest):"},{"line_number":321,"context_line":"    \"\"\"Here we test the new location apis for image with single store"},{"line_number":322,"context_line":"       enabled for glance"},{"line_number":323,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"e4f43657_b7d68688","line":320,"updated":"2024-02-26 11:24:57.000000000","message":"Should we move the tests to ImageLocationsTest?","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93976bd558413ea187a4753f687775ea5149d731","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self.client.wait_for_resource_deletion(image_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class LocationImportTest(base.BaseV2ImageTest):"},{"line_number":321,"context_line":"    \"\"\"Here we test the new location apis for image with single store"},{"line_number":322,"context_line":"       enabled for glance"},{"line_number":323,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3baf65a1_84b7b014","line":320,"range":{"start_line":320,"start_character":6,"end_line":320,"end_character":24},"in_reply_to":"00e5c9e5_9bc1f5e5","updated":"2026-04-08 19:41:12.000000000","message":"I think it is fine; separating the negative asserts will unnecessarily require the test and resource setup.","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"feeca28898265938c5363503256e6d32df4db706","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        self.client.wait_for_resource_deletion(image_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"class LocationImportTest(base.BaseV2ImageTest):"},{"line_number":321,"context_line":"    \"\"\"Here we test the new location apis for image with single store"},{"line_number":322,"context_line":"       enabled for glance"},{"line_number":323,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"20f78a81_82edfe4a","line":320,"in_reply_to":"e4f43657_b7d68688","updated":"2024-07-18 06:45:31.000000000","message":"Those are old location API tests and will be removed in upcoming cycle(s)","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":346,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":347,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":348,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":349,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":350,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":351,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":352,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"a2274cc7_d8c89a6b","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":36},"updated":"2024-06-20 05:52:32.000000000","message":"No need to assert this","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":347,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":348,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":349,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":350,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":351,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":352,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"dd29056d_640850d2","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":36},"in_reply_to":"a2274cc7_d8c89a6b","updated":"2024-07-18 06:24:04.000000000","message":"Acknowledged","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":348,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":349,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":350,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":351,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":352,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"},{"line_number":353,"context_line":"        self.assertIn(\u0027status\u0027, image)"},{"line_number":354,"context_line":"        self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        # Add location with invalid validation_data"}],"source_content_type":"text/x-python","patch_set":8,"id":"76fb3fe5_c591236c","line":353,"range":{"start_line":351,"start_character":8,"end_line":353,"end_character":38},"updated":"2024-06-20 05:52:32.000000000","message":"ditto","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":348,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":349,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":350,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":351,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":352,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"},{"line_number":353,"context_line":"        self.assertIn(\u0027status\u0027, image)"},{"line_number":354,"context_line":"        self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        # Add location with invalid validation_data"}],"source_content_type":"text/x-python","patch_set":8,"id":"4ba2cb9e_eb168571","line":353,"range":{"start_line":351,"start_character":8,"end_line":353,"end_character":38},"in_reply_to":"76fb3fe5_c591236c","updated":"2024-07-18 06:24:04.000000000","message":"Acknowledged","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":415,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":416,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":417,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # Add location with invalid validation_data"},{"line_number":420,"context_line":"        # (wrong hash value in validation data)."},{"line_number":421,"context_line":"        # Image will be reverted to queued state from importing"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ac2b4fd_cc42ffe9","line":418,"updated":"2024-06-20 05:52:32.000000000","message":"I think here you should also assert the location url","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":416,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":417,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # Add location with invalid validation_data"},{"line_number":420,"context_line":"        # (wrong hash value in validation data)."},{"line_number":421,"context_line":"        # Image will be reverted to queued state from importing"}],"source_content_type":"text/x-python","patch_set":8,"id":"24f07a29_ca192d82","line":418,"in_reply_to":"9ac2b4fd_cc42ffe9","updated":"2024-07-18 06:24:04.000000000","message":"Acknowledged","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":422,"context_line":"        # Create an image 2"},{"line_number":423,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":424,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":425,"context_line":"        validation_data \u003d {"},{"line_number":426,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha512\u0027,"},{"line_number":427,"context_line":"            \u0027os_hash_value\u0027: \u0027beefdead\u0027 * 16}"},{"line_number":428,"context_line":"        self.client.add_image_location(image[\u0027id\u0027], url,"}],"source_content_type":"text/x-python","patch_set":8,"id":"0e0923cd_3fd00a9d","line":425,"updated":"2024-06-20 05:52:32.000000000","message":"here before this line you should assert that image is in queued state","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        # Create an image 2"},{"line_number":423,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":424,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":425,"context_line":"        validation_data \u003d {"},{"line_number":426,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha512\u0027,"},{"line_number":427,"context_line":"            \u0027os_hash_value\u0027: \u0027beefdead\u0027 * 16}"},{"line_number":428,"context_line":"        self.client.add_image_location(image[\u0027id\u0027], url,"}],"source_content_type":"text/x-python","patch_set":8,"id":"007cee8e_e5f77408","line":425,"in_reply_to":"0e0923cd_3fd00a9d","updated":"2024-07-18 06:24:04.000000000","message":"Acknowledged","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":472,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":473,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":474,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":475,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    @decorators.idempotent_id(\u0027b6963da4-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":478,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":8,"id":"0bcbd9dd_c18bb35f","line":475,"updated":"2024-06-20 05:52:32.000000000","message":"I think you should delete all 4 images created in this test at the end.","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":473,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":474,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":475,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    @decorators.idempotent_id(\u0027b6963da4-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":478,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":8,"id":"b27440e1_c81558aa","line":475,"in_reply_to":"0bcbd9dd_c18bb35f","updated":"2024-07-18 06:24:04.000000000","message":"Done","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":483,"context_line":"        # with validation_data"},{"line_number":484,"context_line":"        # Create an image 1"},{"line_number":485,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":486,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":487,"context_line":"        url \u003d CONF.image.http_image"},{"line_number":488,"context_line":"        with requests.get(url) as r:"},{"line_number":489,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"}],"source_content_type":"text/x-python","patch_set":8,"id":"0646c86f_5f005087","line":486,"updated":"2024-06-20 05:52:32.000000000","message":"here you should assert image is in queued state.\nNote: applicable at all places where you are creating new image.","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        # with validation_data"},{"line_number":484,"context_line":"        # Create an image 1"},{"line_number":485,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":486,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"},{"line_number":487,"context_line":"        url \u003d CONF.image.http_image"},{"line_number":488,"context_line":"        with requests.get(url) as r:"},{"line_number":489,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"}],"source_content_type":"text/x-python","patch_set":8,"id":"512aed91_d43136ac","line":486,"in_reply_to":"0646c86f_5f005087","updated":"2024-07-18 06:24:04.000000000","message":"Done","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":555,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":556,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":557,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":558,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":559,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":560,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":561,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"},{"line_number":562,"context_line":"        self.assertIn(\u0027status\u0027, image)"},{"line_number":563,"context_line":"        self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # Add location with invalid validation_data"}],"source_content_type":"text/x-python","patch_set":8,"id":"8c332292_36047077","line":562,"range":{"start_line":558,"start_character":8,"end_line":562,"end_character":38},"updated":"2024-06-20 05:52:32.000000000","message":"No need to assert all these except name can be fine.","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":556,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":557,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":558,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":559,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"},{"line_number":560,"context_line":"        self.assertIn(\u0027visibility\u0027, image)"},{"line_number":561,"context_line":"        self.assertEqual(\u0027private\u0027, image[\u0027visibility\u0027])"},{"line_number":562,"context_line":"        self.assertIn(\u0027status\u0027, image)"},{"line_number":563,"context_line":"        self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # Add location with invalid validation_data"}],"source_content_type":"text/x-python","patch_set":8,"id":"19238213_c915572b","line":562,"range":{"start_line":558,"start_character":8,"end_line":562,"end_character":38},"in_reply_to":"8c332292_36047077","updated":"2024-07-18 06:24:04.000000000","message":"Done","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"31010c4e1518ed6f3d7d8852ed74a7e4f1b3332b","unresolved":true,"context_lines":[{"line_number":615,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":616,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":617,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":618,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":619,"context_line":"        # Add location with invalid validation_data"},{"line_number":620,"context_line":"        # (wrong hash value in validation data)."},{"line_number":621,"context_line":"        # Image will be reverted to queued state from importing"}],"source_content_type":"text/x-python","patch_set":8,"id":"813c01b5_85dd75df","line":618,"updated":"2024-06-20 05:52:32.000000000","message":"I think here location url should also be validated.\nApplicable at all places where operation is successful.","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"5ab7bf3cc6be63150f45d287e69ebe73187c1917","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":616,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":617,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":618,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":619,"context_line":"        # Add location with invalid validation_data"},{"line_number":620,"context_line":"        # (wrong hash value in validation data)."},{"line_number":621,"context_line":"        # Image will be reverted to queued state from importing"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb8ba68_9d3d4e13","line":618,"in_reply_to":"813c01b5_85dd75df","updated":"2024-07-18 06:24:04.000000000","message":"Acknowledged","commit_id":"87dc537797af9b452869139145ebb4a2f5f15fef"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"feeca28898265938c5363503256e6d32df4db706","unresolved":true,"context_lines":[{"line_number":324,"context_line":"    @classmethod"},{"line_number":325,"context_line":"    def resource_setup(cls):"},{"line_number":326,"context_line":"        super(LocationImportTest, cls).resource_setup()"},{"line_number":327,"context_line":"        cls.available_stores \u003d cls.get_available_stores()"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":330,"context_line":"            # API is not new enough to support add location API"}],"source_content_type":"text/x-python","patch_set":9,"id":"b6ab3a72_fc58aa86","line":327,"updated":"2024-07-18 06:45:31.000000000","message":"I think this is not required","commit_id":"86c3fe7175ac849d888eb0cf3f3fcaa68742fce6"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"aa060251f33c17ee7806b3c344d357080d2d9446","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    @classmethod"},{"line_number":325,"context_line":"    def resource_setup(cls):"},{"line_number":326,"context_line":"        super(LocationImportTest, cls).resource_setup()"},{"line_number":327,"context_line":"        cls.available_stores \u003d cls.get_available_stores()"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":330,"context_line":"            # API is not new enough to support add location API"}],"source_content_type":"text/x-python","patch_set":9,"id":"cc58a996_7db9aa81","line":327,"in_reply_to":"b6ab3a72_fc58aa86","updated":"2024-08-01 11:30:49.000000000","message":"Done","commit_id":"86c3fe7175ac849d888eb0cf3f3fcaa68742fce6"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"9cfcd2d1c8913b5cc4c557ceef83851fac951bc7","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":412,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":413,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":414,"context_line":"        self.assertEqual(1, len(image[\u0027locations\u0027]))"},{"line_number":415,"context_line":"        self.assertEqual(url, image[\u0027locations\u0027][0][\u0027url\u0027])"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"385f0aa2_2e1d70b7","line":414,"range":{"start_line":414,"start_character":8,"end_line":414,"end_character":52},"updated":"2024-07-18 08:46:40.000000000","message":"tempest-* jobs are failing here with error;\n\nTraceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/api/image/v2/test_images.py\", line 414, in test_add_location_for_image_with_do_secure_hash_true\n    self.assertEqual(1, len(image[\u0027locations\u0027]))\nKeyError: \u0027locations\u0027","commit_id":"86c3fe7175ac849d888eb0cf3f3fcaa68742fce6"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"aa060251f33c17ee7806b3c344d357080d2d9446","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":412,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":413,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":414,"context_line":"        self.assertEqual(1, len(image[\u0027locations\u0027]))"},{"line_number":415,"context_line":"        self.assertEqual(url, image[\u0027locations\u0027][0][\u0027url\u0027])"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"c1eb4f7e_d43a1442","line":414,"range":{"start_line":414,"start_character":8,"end_line":414,"end_character":52},"in_reply_to":"385f0aa2_2e1d70b7","updated":"2024-08-01 11:30:49.000000000","message":"Done.\n\nlocation can\u0027t be checked here since there is no location available in the resp of get_image.","commit_id":"86c3fe7175ac849d888eb0cf3f3fcaa68742fce6"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":320,"context_line":"def add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":321,"context_line":"    uuid \u003d data_utils.rand_uuid()"},{"line_number":322,"context_line":"    image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":323,"context_line":"    container_format \u003d CONF.image.container_formats[0]"},{"line_number":324,"context_line":"    disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":325,"context_line":"    image \u003d self.create_image(name\u003dimage_name,"},{"line_number":326,"context_line":"                              container_format\u003dcontainer_format,"},{"line_number":327,"context_line":"                              disk_format\u003ddisk_format,"}],"source_content_type":"text/x-python","patch_set":10,"id":"a5567555_da43246c","line":324,"range":{"start_line":323,"start_character":4,"end_line":324,"end_character":44},"updated":"2024-08-01 13:47:23.000000000","message":"No need to specify it explicitly here, as by default it fetches 1st element from the list.","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":true,"context_lines":[{"line_number":320,"context_line":"def add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":321,"context_line":"    uuid \u003d data_utils.rand_uuid()"},{"line_number":322,"context_line":"    image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":323,"context_line":"    container_format \u003d CONF.image.container_formats[0]"},{"line_number":324,"context_line":"    disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":325,"context_line":"    image \u003d self.create_image(name\u003dimage_name,"},{"line_number":326,"context_line":"                              container_format\u003dcontainer_format,"},{"line_number":327,"context_line":"                              disk_format\u003ddisk_format,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf9e1187_484729f6","line":324,"range":{"start_line":323,"start_character":4,"end_line":324,"end_character":44},"in_reply_to":"a5567555_da43246c","updated":"2024-08-06 14:20:40.000000000","message":"sry, i didn\u0027t get this, do you mean list can be passed here directly? then it fails during schema validation.","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":320,"context_line":"def add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":321,"context_line":"    uuid \u003d data_utils.rand_uuid()"},{"line_number":322,"context_line":"    image_name \u003d data_utils.rand_name(\u0027image\u0027)"},{"line_number":323,"context_line":"    container_format \u003d CONF.image.container_formats[0]"},{"line_number":324,"context_line":"    disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":325,"context_line":"    image \u003d self.create_image(name\u003dimage_name,"},{"line_number":326,"context_line":"                              container_format\u003dcontainer_format,"},{"line_number":327,"context_line":"                              disk_format\u003ddisk_format,"}],"source_content_type":"text/x-python","patch_set":10,"id":"abffaf5b_a5cee5fa","line":324,"range":{"start_line":323,"start_character":4,"end_line":324,"end_character":44},"in_reply_to":"bf9e1187_484729f6","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":352,"context_line":"                      image[\u0027id\u0027], url,"},{"line_number":353,"context_line":"                      validation_data\u003dvalidation_data)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    # Add location with invalid validation_data \u0026"},{"line_number":356,"context_line":"    # (invalid hash_algo)"},{"line_number":357,"context_line":"    validation_data \u003d {"},{"line_number":358,"context_line":"        \u0027os_hash_algo\u0027: \u0027sha123\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"0a74f208_0779d595","line":355,"range":{"start_line":355,"start_character":48,"end_line":355,"end_character":49},"updated":"2024-08-01 13:47:23.000000000","message":"Nit it should not be \u0026 here","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                      image[\u0027id\u0027], url,"},{"line_number":353,"context_line":"                      validation_data\u003dvalidation_data)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    # Add location with invalid validation_data \u0026"},{"line_number":356,"context_line":"    # (invalid hash_algo)"},{"line_number":357,"context_line":"    validation_data \u003d {"},{"line_number":358,"context_line":"        \u0027os_hash_algo\u0027: \u0027sha123\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"2993c25f_52122577","line":355,"range":{"start_line":355,"start_character":48,"end_line":355,"end_character":49},"in_reply_to":"0a74f208_0779d595","updated":"2024-08-06 14:20:40.000000000","message":"Done","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url,"},{"line_number":385,"context_line":"                                   validation_data\u003dvalidation_data)"},{"line_number":386,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":387,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":388,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"93cadc09_fb5f4884","line":387,"range":{"start_line":386,"start_character":4,"end_line":387,"end_character":44},"updated":"2024-08-01 13:47:23.000000000","message":"Since here we are using http store (right?) it is possible that hash validation fails and this task will never reach to state success causing timeout issue. So this needs to handle accordingly.","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url,"},{"line_number":385,"context_line":"                                   validation_data\u003dvalidation_data)"},{"line_number":386,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":387,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":388,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"43abd76d_878bbf93","line":387,"range":{"start_line":386,"start_character":4,"end_line":387,"end_character":44},"in_reply_to":"93cadc09_fb5f4884","updated":"2024-08-06 14:20:40.000000000","message":"Acknowledged","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":431,"context_line":"        \u0027os_hash_value\u0027: expect_h}"},{"line_number":432,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url,"},{"line_number":433,"context_line":"                                   validation_data\u003dvalidation_data)"},{"line_number":434,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":435,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":436,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"6bcfd461_b48eb653","line":435,"range":{"start_line":434,"start_character":4,"end_line":435,"end_character":44},"updated":"2024-08-01 13:47:23.000000000","message":"ditto!","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        \u0027os_hash_value\u0027: expect_h}"},{"line_number":432,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url,"},{"line_number":433,"context_line":"                                   validation_data\u003dvalidation_data)"},{"line_number":434,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":435,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":436,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"557ad939_62c99285","line":435,"range":{"start_line":434,"start_character":4,"end_line":435,"end_character":44},"in_reply_to":"6bcfd461_b48eb653","updated":"2024-08-06 14:20:40.000000000","message":"Done","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                                     disk_format\u003d\u0027raw\u0027)"},{"line_number":451,"context_line":"    self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":452,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url)"},{"line_number":453,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":454,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":455,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"15b43f1f_97b985da","line":454,"range":{"start_line":453,"start_character":4,"end_line":454,"end_character":44},"updated":"2024-08-01 13:47:23.000000000","message":"ditto!","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                                     disk_format\u003d\u0027raw\u0027)"},{"line_number":451,"context_line":"    self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":452,"context_line":"    self.client.add_image_location(image[\u0027id\u0027], url)"},{"line_number":453,"context_line":"    tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":454,"context_line":"        self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":455,"context_line":"    self.assertEqual(1, len(tasks))"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"28fe3421_165f6001","line":454,"range":{"start_line":453,"start_character":4,"end_line":454,"end_character":44},"in_reply_to":"15b43f1f_97b985da","updated":"2024-08-06 14:20:40.000000000","message":"Done","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a724ee4651246e6d235835a2b11cd96228242f2b","unresolved":true,"context_lines":[{"line_number":532,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":533,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":534,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":535,"context_line":"        add_location_for_image_with_do_secure_hash_true(self)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    @decorators.idempotent_id(\u0027b6963da4-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":538,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":10,"id":"89dacf37_1ad7c2ce","line":535,"range":{"start_line":535,"start_character":8,"end_line":535,"end_character":55},"updated":"2024-08-01 13:47:23.000000000","message":"I think you should make these methods private and move them inside class or else make them static.","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"2f3a938c6689d1762623aeb1a0ef165c20644dc7","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"},{"line_number":533,"context_line":"        \u0027do_secure_hash is disabled\u0027)"},{"line_number":534,"context_line":"    def test_add_location_for_image_with_do_secure_hash_true(self):"},{"line_number":535,"context_line":"        add_location_for_image_with_do_secure_hash_true(self)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    @decorators.idempotent_id(\u0027b6963da4-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":538,"context_line":"    @testtools.skipIf("}],"source_content_type":"text/x-python","patch_set":10,"id":"78877032_3e5830d6","line":535,"range":{"start_line":535,"start_character":8,"end_line":535,"end_character":55},"in_reply_to":"89dacf37_1ad7c2ce","updated":"2024-08-06 14:20:40.000000000","message":"Acknowledged","commit_id":"26edc1f9201e352e0ece16b73f9aff123898b9c1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":329,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":330,"context_line":"        image \u003d self.create_image(name\u003dimage_name,"},{"line_number":331,"context_line":"                                  container_format\u003dcontainer_format,"},{"line_number":332,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":333,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":334,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":335,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"5b1105fe_203beb4b","line":332,"range":{"start_line":331,"start_character":34,"end_line":332,"end_character":58},"updated":"2024-08-06 14:32:21.000000000","message":"You don\u0027t need to pass these two parameters to create_image method.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":329,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":330,"context_line":"        image \u003d self.create_image(name\u003dimage_name,"},{"line_number":331,"context_line":"                                  container_format\u003dcontainer_format,"},{"line_number":332,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":333,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":334,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":335,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"b6074e62_b9d8f3ee","line":332,"range":{"start_line":331,"start_character":34,"end_line":332,"end_character":58},"in_reply_to":"5b1105fe_203beb4b","updated":"2024-08-13 06:53:19.000000000","message":"can we create an image without container_format \u0026 disk_format?","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c125cafc074da0e938d8a59f2f05a833bbbe730c","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        container_format \u003d CONF.image.container_formats[0]"},{"line_number":329,"context_line":"        disk_format \u003d CONF.image.disk_formats[0]"},{"line_number":330,"context_line":"        image \u003d self.create_image(name\u003dimage_name,"},{"line_number":331,"context_line":"                                  container_format\u003dcontainer_format,"},{"line_number":332,"context_line":"                                  disk_format\u003ddisk_format,"},{"line_number":333,"context_line":"                                  visibility\u003d\u0027private\u0027,"},{"line_number":334,"context_line":"                                  ramdisk_id\u003duuid)"},{"line_number":335,"context_line":"        self.assertEqual(image_name, image[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfdb0090_53ddda9c","line":332,"range":{"start_line":331,"start_character":34,"end_line":332,"end_character":58},"in_reply_to":"b6074e62_b9d8f3ee","updated":"2024-08-13 07:08:42.000000000","message":"Ok, we can revisit it later.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":390,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"0d5f3fd5_0182be68","line":393,"updated":"2024-08-06 14:32:21.000000000","message":"You should add a note here to clarify why you are doing this.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"6dde0af4_1309734d","line":393,"in_reply_to":"0d5f3fd5_0182be68","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"7d05f04a_67f9663e","line":394,"updated":"2024-08-06 14:32:21.000000000","message":"you can fetch task here by adding [0] at the end","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1bda37ca_82767a8a","line":394,"in_reply_to":"7d05f04a_67f9663e","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":398,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"fed3fc3c_56acc303","line":395,"updated":"2024-08-06 14:32:21.000000000","message":"No need to assert this.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        start_time \u003d int(time.time())"},{"line_number":393,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":398,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"793b523f_37fed830","line":395,"in_reply_to":"fed3fc3c_56acc303","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":398,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":399,"context_line":"                self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":400,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"418262dc_55d3c5a1","line":397,"range":{"start_line":397,"start_character":16,"end_line":397,"end_character":59},"updated":"2024-08-06 14:32:21.000000000","message":"take this out of if block so that not needed to be repeated in else as well.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":395,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":396,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":397,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":398,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":399,"context_line":"                self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":400,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"69380538_e5b5d091","line":397,"range":{"start_line":397,"start_character":16,"end_line":397,"end_character":59},"in_reply_to":"418262dc_55d3c5a1","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":400,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":401,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"6647babb_f7426710","line":402,"range":{"start_line":402,"start_character":16,"end_line":402,"end_character":22},"updated":"2024-08-06 14:32:21.000000000","message":"Why is this return?","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"48c05c90d2933f156e9d06b14fcf58a3383478ef","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":400,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":401,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"6437fd9f_2ea001f7","line":402,"range":{"start_line":402,"start_character":16,"end_line":402,"end_character":22},"in_reply_to":"2c2ef587_8de645b3","updated":"2024-08-13 10:49:43.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":true,"context_lines":[{"line_number":399,"context_line":"                self.assertEqual(\u0027sha256\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":400,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":401,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"2c2ef587_8de645b3","line":402,"range":{"start_line":402,"start_character":16,"end_line":402,"end_character":22},"in_reply_to":"6647babb_f7426710","updated":"2024-08-13 06:53:19.000000000","message":"ohh sry forgot to remove it.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":406,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":407,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"394f7303_ef4d4fff","line":405,"updated":"2024-08-06 14:32:21.000000000","message":"I think here you should assert that location is still exist in with reference to lp bug.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"48c05c90d2933f156e9d06b14fcf58a3383478ef","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":406,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":407,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"0686d22b_4717cb90","line":405,"in_reply_to":"1bdf4623_7f105c5d","updated":"2024-08-13 10:49:43.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":true,"context_lines":[{"line_number":402,"context_line":"                return"},{"line_number":403,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":404,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":405,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":406,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":407,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1bdf4623_7f105c5d","line":405,"in_reply_to":"394f7303_ef4d4fff","updated":"2024-08-13 06:53:19.000000000","message":"we don\u0027t return location in the get_image response so can\u0027t assert it here. Instead asserting \u0027stores\u0027","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":406,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":407,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":409,"context_line":"                return"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"74141c37_c4a695f8","line":409,"range":{"start_line":409,"start_character":16,"end_line":409,"end_character":22},"updated":"2024-08-06 14:32:21.000000000","message":"ditto","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":407,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":409,"context_line":"                return"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"15933f90_9b66ea49","line":409,"range":{"start_line":409,"start_character":16,"end_line":409,"end_character":22},"in_reply_to":"74141c37_c4a695f8","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":430,"context_line":"        self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":431,"context_line":"        self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":432,"context_line":"        self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        # Add location with valid validation_data"}],"source_content_type":"text/x-python","patch_set":11,"id":"0eba7114_ab1b00e5","line":433,"updated":"2024-08-06 14:32:21.000000000","message":"ditto, assert location here with reference to LP bug","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":430,"context_line":"        self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":431,"context_line":"        self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":432,"context_line":"        self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        # Add location with valid validation_data"}],"source_content_type":"text/x-python","patch_set":11,"id":"9d147846_b3c10aa6","line":433,"in_reply_to":"0eba7114_ab1b00e5","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        start_time \u003d int(time.time())"},{"line_number":451,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"b23cd51c_ceab0529","line":452,"range":{"start_line":452,"start_character":12,"end_line":452,"end_character":70},"updated":"2024-08-06 14:32:21.000000000","message":"fetch task here only","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":449,"context_line":""},{"line_number":450,"context_line":"        start_time \u003d int(time.time())"},{"line_number":451,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f01174b_1d3a41ae","line":452,"range":{"start_line":452,"start_character":12,"end_line":452,"end_character":70},"in_reply_to":"b23cd51c_ceab0529","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":450,"context_line":"        start_time \u003d int(time.time())"},{"line_number":451,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":456,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"ebf4ca05_6f0f2e8e","line":453,"range":{"start_line":453,"start_character":12,"end_line":453,"end_character":43},"updated":"2024-08-06 14:32:21.000000000","message":"No need to assert this","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        start_time \u003d int(time.time())"},{"line_number":451,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":456,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"b2492d2d_d59da70d","line":453,"range":{"start_line":453,"start_character":12,"end_line":453,"end_character":43},"in_reply_to":"ebf4ca05_6f0f2e8e","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":456,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":457,"context_line":"                self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":458,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"33d83fca_00e314a7","line":455,"updated":"2024-08-06 14:32:21.000000000","message":"move this outside if and add note why you are doing this if and else","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":453,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":454,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":455,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":456,"context_line":"                self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":457,"context_line":"                self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":458,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"8d5bfe0d_34e45665","line":455,"in_reply_to":"33d83fca_00e314a7","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":457,"context_line":"                self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":458,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":459,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":460,"context_line":"                return"},{"line_number":461,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":462,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":463,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"f6778c5d_1050237c","line":460,"range":{"start_line":460,"start_character":16,"end_line":460,"end_character":22},"updated":"2024-08-06 14:32:21.000000000","message":"why return?","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":457,"context_line":"                self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":458,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":459,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":460,"context_line":"                return"},{"line_number":461,"context_line":"            elif tasks[0][\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":462,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":463,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"546205ee_48ace1b6","line":460,"range":{"start_line":460,"start_character":16,"end_line":460,"end_character":22},"in_reply_to":"f6778c5d_1050237c","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":465,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":466,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":467,"context_line":"                return"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9eb8f35e_81a602a3","line":467,"range":{"start_line":467,"start_character":16,"end_line":467,"end_character":22},"updated":"2024-08-06 14:32:21.000000000","message":"ditto","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":465,"context_line":"                self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":466,"context_line":"                self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":467,"context_line":"                return"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":470,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f238466_9425213c","line":467,"range":{"start_line":467,"start_character":16,"end_line":467,"end_character":22},"in_reply_to":"9eb8f35e_81a602a3","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad59c6f3654e1ab132ea84840db68143cbd14f8c","unresolved":true,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        start_time \u003d int(time.time())"},{"line_number":480,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":481,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":482,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":483,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":484,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"23b7f3f1_caf0b45e","line":481,"range":{"start_line":481,"start_character":12,"end_line":481,"end_character":70},"updated":"2024-08-06 14:32:21.000000000","message":"ditto, all above comments applicable here as well.","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a9d1d59b7ce153add7a7415c36c50d21095b82b2","unresolved":false,"context_lines":[{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        start_time \u003d int(time.time())"},{"line_number":480,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":481,"context_line":"            tasks \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027]"},{"line_number":482,"context_line":"            self.assertEqual(1, len(tasks))"},{"line_number":483,"context_line":"            if tasks[0][\u0027status\u0027] \u003d\u003d \u0027success\u0027:"},{"line_number":484,"context_line":"                image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"2142e4f8_3b775c55","line":481,"range":{"start_line":481,"start_character":12,"end_line":481,"end_character":70},"in_reply_to":"23b7f3f1_caf0b45e","updated":"2024-08-13 06:53:19.000000000","message":"Done","commit_id":"cced7ce01d46964ca35d1bda92aee2ab5e8a7eba"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c125cafc074da0e938d8a59f2f05a833bbbe730c","unresolved":true,"context_lines":[{"line_number":402,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":403,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":404,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":405,"context_line":"                break"},{"line_number":406,"context_line":"            elif task[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":407,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"b6ccd9e1_4c4815fb","line":405,"range":{"start_line":405,"start_character":16,"end_line":405,"end_character":21},"updated":"2024-08-13 07:08:42.000000000","message":"I think you can move this break out of if and else block","commit_id":"fcfe14b0ec0b78b0b9a434a80a0a338a87c5cf13"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"48c05c90d2933f156e9d06b14fcf58a3383478ef","unresolved":false,"context_lines":[{"line_number":402,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":403,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":404,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":405,"context_line":"                break"},{"line_number":406,"context_line":"            elif task[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":407,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":408,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"4f7b5a97_3589b76f","line":405,"range":{"start_line":405,"start_character":16,"end_line":405,"end_character":21},"in_reply_to":"b6ccd9e1_4c4815fb","updated":"2024-08-13 10:49:43.000000000","message":"Done","commit_id":"fcfe14b0ec0b78b0b9a434a80a0a338a87c5cf13"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c125cafc074da0e938d8a59f2f05a833bbbe730c","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":473,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":474,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":475,"context_line":"                break"},{"line_number":476,"context_line":"            elif task[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":477,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":478,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"b9b6aa39_edb1b830","line":475,"range":{"start_line":475,"start_character":16,"end_line":475,"end_character":21},"updated":"2024-08-13 07:08:42.000000000","message":"ditto,\nalso you can create a separate method _assertSuccess and _assertFailure and call these methods where asserts are repetitive (not pressing for it though).","commit_id":"fcfe14b0ec0b78b0b9a434a80a0a338a87c5cf13"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"48c05c90d2933f156e9d06b14fcf58a3383478ef","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":473,"context_line":"                self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":474,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":475,"context_line":"                break"},{"line_number":476,"context_line":"            elif task[\u0027status\u0027] \u003d\u003d \u0027failure\u0027:"},{"line_number":477,"context_line":"                self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":478,"context_line":"                self.assertIsNone(image[\u0027os_hash_algo\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"dae125e0_292cd0f4","line":475,"range":{"start_line":475,"start_character":16,"end_line":475,"end_character":21},"in_reply_to":"b9b6aa39_edb1b830","updated":"2024-08-13 10:49:43.000000000","message":"Done","commit_id":"fcfe14b0ec0b78b0b9a434a80a0a338a87c5cf13"},{"author":{"_account_id":35834,"name":"Yosi Ben Shimon","display_name":"Yosi Ben Shimon","email":"ybenshim@redhat.com","username":"ybenshim"},"change_message_id":"3d8bbc968381335891fee5422a848d5a137d05e3","unresolved":true,"context_lines":[{"line_number":556,"context_line":"    def resource_setup(cls):"},{"line_number":557,"context_line":"        super(LocationImportTest, cls).resource_setup()"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":560,"context_line":"            # API is not new enough to support add location API"},{"line_number":561,"context_line":"            skip_msg \u003d ("},{"line_number":562,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":563,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":566,"context_line":"    @testtools.skipIf("},{"line_number":567,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"cc6a36d0_897ee463","line":564,"range":{"start_line":559,"start_character":0,"end_line":564,"end_character":0},"updated":"2024-08-15 11:02:31.000000000","message":"Please use skip_checks() from tempest.tempest.api.image.base.BaseV2ImageTest instead of resource_setup()","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":556,"context_line":"    def resource_setup(cls):"},{"line_number":557,"context_line":"        super(LocationImportTest, cls).resource_setup()"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":560,"context_line":"            # API is not new enough to support add location API"},{"line_number":561,"context_line":"            skip_msg \u003d ("},{"line_number":562,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":563,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":566,"context_line":"    @testtools.skipIf("},{"line_number":567,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"afd725bb_5978d7f9","line":564,"range":{"start_line":559,"start_character":0,"end_line":564,"end_character":0},"in_reply_to":"6d66cea7_2ff670e9","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"766cae9381773b95312ef956f0e03a2ded36afb1","unresolved":true,"context_lines":[{"line_number":556,"context_line":"    def resource_setup(cls):"},{"line_number":557,"context_line":"        super(LocationImportTest, cls).resource_setup()"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":560,"context_line":"            # API is not new enough to support add location API"},{"line_number":561,"context_line":"            skip_msg \u003d ("},{"line_number":562,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":563,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"},{"line_number":566,"context_line":"    @testtools.skipIf("},{"line_number":567,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"6d66cea7_2ff670e9","line":564,"range":{"start_line":559,"start_character":0,"end_line":564,"end_character":0},"in_reply_to":"cc6a36d0_897ee463","updated":"2026-01-15 08:17:26.000000000","message":"well, the clients required for version check are not available in skip_checks(), so resource_setup() is required here.","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":35834,"name":"Yosi Ben Shimon","display_name":"Yosi Ben Shimon","email":"ybenshim@redhat.com","username":"ybenshim"},"change_message_id":"3d8bbc968381335891fee5422a848d5a137d05e3","unresolved":true,"context_lines":[{"line_number":584,"context_line":"        super(MultistoreLocationImportTest, cls).resource_setup()"},{"line_number":585,"context_line":"        cls.available_stores \u003d cls.get_available_stores()"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":588,"context_line":"            # API is not new enough to support add location API"},{"line_number":589,"context_line":"            skip_msg \u003d ("},{"line_number":590,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":591,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":594,"context_line":"            skip_msg \u003d ("},{"line_number":595,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":596,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":597,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    @decorators.idempotent_id(\u00273f84b819-0df8-4f81-af30-7c2d4e242bc9\u0027)"},{"line_number":600,"context_line":"    @testtools.skipIf("},{"line_number":601,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"06c4eca6_2fad0555","line":598,"range":{"start_line":587,"start_character":0,"end_line":598,"end_character":0},"updated":"2024-08-15 11:02:31.000000000","message":"same","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"766cae9381773b95312ef956f0e03a2ded36afb1","unresolved":true,"context_lines":[{"line_number":584,"context_line":"        super(MultistoreLocationImportTest, cls).resource_setup()"},{"line_number":585,"context_line":"        cls.available_stores \u003d cls.get_available_stores()"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":588,"context_line":"            # API is not new enough to support add location API"},{"line_number":589,"context_line":"            skip_msg \u003d ("},{"line_number":590,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":591,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":594,"context_line":"            skip_msg \u003d ("},{"line_number":595,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":596,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":597,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    @decorators.idempotent_id(\u00273f84b819-0df8-4f81-af30-7c2d4e242bc9\u0027)"},{"line_number":600,"context_line":"    @testtools.skipIf("},{"line_number":601,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"aacf9bce_48fe1d05","line":598,"range":{"start_line":587,"start_character":0,"end_line":598,"end_character":0},"in_reply_to":"06c4eca6_2fad0555","updated":"2026-01-15 08:17:26.000000000","message":"ditto","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        super(MultistoreLocationImportTest, cls).resource_setup()"},{"line_number":585,"context_line":"        cls.available_stores \u003d cls.get_available_stores()"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":588,"context_line":"            # API is not new enough to support add location API"},{"line_number":589,"context_line":"            skip_msg \u003d ("},{"line_number":590,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":591,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":594,"context_line":"            skip_msg \u003d ("},{"line_number":595,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":596,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":597,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    @decorators.idempotent_id(\u00273f84b819-0df8-4f81-af30-7c2d4e242bc9\u0027)"},{"line_number":600,"context_line":"    @testtools.skipIf("},{"line_number":601,"context_line":"        not CONF.image_feature_enabled.calculate_hash,"}],"source_content_type":"text/x-python","patch_set":13,"id":"a4793677_7c33188e","line":598,"range":{"start_line":587,"start_character":0,"end_line":598,"end_character":0},"in_reply_to":"aacf9bce_48fe1d05","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b6fd1a647a62c81c4ea37c11fd41108202dae3ec"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":377,"context_line":"            \u0027os_hash_algo\u0027: \"sha512\","},{"line_number":378,"context_line":"            \u0027os_hash_value\u0027: \"dbc9e0f80d131e64b94913a7b40bb5\""},{"line_number":379,"context_line":"        }"},{"line_number":380,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":381,"context_line":"                          self.client.add_image_location,"},{"line_number":382,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":383,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # Add location with invalid validation_data (without os_hash_algo)"},{"line_number":386,"context_line":"        with requests.get(url) as r:"},{"line_number":387,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":388,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":391,"context_line":"                          self.client.add_image_location,"},{"line_number":392,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":393,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        # Add location with invalid validation_data"},{"line_number":396,"context_line":"        # (invalid hash_algo)"}],"source_content_type":"text/x-python","patch_set":20,"id":"c7d14ba8_8cffcfc0","line":393,"range":{"start_line":380,"start_character":0,"end_line":393,"end_character":58},"updated":"2026-02-17 13:09:03.000000000","message":"both are raising badRequest, is it possible to assert error messages here?","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            \u0027os_hash_algo\u0027: \"sha512\","},{"line_number":378,"context_line":"            \u0027os_hash_value\u0027: \"dbc9e0f80d131e64b94913a7b40bb5\""},{"line_number":379,"context_line":"        }"},{"line_number":380,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":381,"context_line":"                          self.client.add_image_location,"},{"line_number":382,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":383,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # Add location with invalid validation_data (without os_hash_algo)"},{"line_number":386,"context_line":"        with requests.get(url) as r:"},{"line_number":387,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":388,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":391,"context_line":"                          self.client.add_image_location,"},{"line_number":392,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":393,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        # Add location with invalid validation_data"},{"line_number":396,"context_line":"        # (invalid hash_algo)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a5cb359_7a4ebf6c","line":393,"range":{"start_line":380,"start_character":0,"end_line":393,"end_character":58},"in_reply_to":"c7d14ba8_8cffcfc0","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        # Add location with invalid validation_data"},{"line_number":396,"context_line":"        # (invalid hash_algo)"},{"line_number":397,"context_line":"        validation_data \u003d {"},{"line_number":398,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha123\u0027,"},{"line_number":399,"context_line":"            \u0027os_hash_value\u0027: expect_h}"},{"line_number":400,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":401,"context_line":"                          self.client.add_image_location,"},{"line_number":402,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":403,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # Add location with invalid validation_data"},{"line_number":406,"context_line":"        # (mismatch hash_value with hash algo)"}],"source_content_type":"text/x-python","patch_set":20,"id":"d8ef9db3_c25d8594","line":403,"range":{"start_line":397,"start_character":0,"end_line":403,"end_character":58},"updated":"2026-02-17 13:09:03.000000000","message":"ditto","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        # Add location with invalid validation_data"},{"line_number":396,"context_line":"        # (invalid hash_algo)"},{"line_number":397,"context_line":"        validation_data \u003d {"},{"line_number":398,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha123\u0027,"},{"line_number":399,"context_line":"            \u0027os_hash_value\u0027: expect_h}"},{"line_number":400,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":401,"context_line":"                          self.client.add_image_location,"},{"line_number":402,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":403,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        # Add location with invalid validation_data"},{"line_number":406,"context_line":"        # (mismatch hash_value with hash algo)"}],"source_content_type":"text/x-python","patch_set":20,"id":"a755e117_76b6ff7d","line":403,"range":{"start_line":397,"start_character":0,"end_line":403,"end_character":58},"in_reply_to":"d8ef9db3_c25d8594","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":411,"context_line":"        validation_data \u003d {"},{"line_number":412,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha512\u0027,"},{"line_number":413,"context_line":"            \u0027os_hash_value\u0027: expect_h}"},{"line_number":414,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":415,"context_line":"                          self.client.add_image_location,"},{"line_number":416,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":417,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # Add location with os_hash_algo other than sha512"},{"line_number":420,"context_line":"        validation_data \u003d {"}],"source_content_type":"text/x-python","patch_set":20,"id":"b8cd29e3_670d54ae","line":417,"range":{"start_line":414,"start_character":0,"end_line":417,"end_character":58},"updated":"2026-02-17 13:09:03.000000000","message":"ditto","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        validation_data \u003d {"},{"line_number":412,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha512\u0027,"},{"line_number":413,"context_line":"            \u0027os_hash_value\u0027: expect_h}"},{"line_number":414,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":415,"context_line":"                          self.client.add_image_location,"},{"line_number":416,"context_line":"                          image[\u0027id\u0027], url,"},{"line_number":417,"context_line":"                          validation_data\u003dvalidation_data)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        # Add location with os_hash_algo other than sha512"},{"line_number":420,"context_line":"        validation_data \u003d {"}],"source_content_type":"text/x-python","patch_set":20,"id":"287ccfcc_3a6f97f6","line":417,"range":{"start_line":414,"start_character":0,"end_line":417,"end_character":58},"in_reply_to":"b8cd29e3_670d54ae","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":502,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":503,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":504,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":505,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":506,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a6f5d5ee_3786e357","line":506,"range":{"start_line":505,"start_character":0,"end_line":506,"end_character":52},"updated":"2026-02-17 13:09:03.000000000","message":"you should assert here expected checksum and expected hash","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":503,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":504,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":505,"context_line":"        self.assertIsNotNone(image[\u0027checksum\u0027])"},{"line_number":506,"context_line":"        self.assertIsNotNone(image[\u0027os_hash_value\u0027])"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"791754bd_e87b449a","line":506,"range":{"start_line":505,"start_character":0,"end_line":506,"end_character":52},"in_reply_to":"a6f5d5ee_3786e357","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":532,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":533,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":534,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":535,"context_line":"        self.assertIsNotNone(expect_c, image[\u0027checksum\u0027])"},{"line_number":536,"context_line":"        self.assertIsNotNone(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":539,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bb014276_f1fe2754","line":536,"range":{"start_line":535,"start_character":0,"end_line":536,"end_character":62},"updated":"2026-02-17 13:09:03.000000000","message":"I think we need scenario with do_secure_hash is False and invalid data passed in validation data.","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":533,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":534,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":535,"context_line":"        self.assertIsNotNone(expect_c, image[\u0027checksum\u0027])"},{"line_number":536,"context_line":"        self.assertIsNotNone(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":539,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"119212d1_14ba9f51","line":536,"range":{"start_line":535,"start_character":0,"end_line":536,"end_character":62},"in_reply_to":"bb014276_f1fe2754","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2457ead78be5823e03156c554a7954c41a5a43c1","unresolved":true,"context_lines":[{"line_number":548,"context_line":"        tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":549,"context_line":"            self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":550,"context_line":"        self.assertEqual(1, len(tasks))"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":553,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":554,"context_line":"        self.assertIsNotNone(image[\u0027size\u0027])"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"0d66690d_d70b8f1e","line":554,"range":{"start_line":551,"start_character":0,"end_line":554,"end_character":43},"updated":"2026-02-17 13:09:03.000000000","message":"I think here you should verify that checksum and hash are not calculated, right?","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"00e79e6b467460cc29eb77dba135971db4762b83","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        tasks \u003d waiters.wait_for_image_tasks_status("},{"line_number":549,"context_line":"            self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":550,"context_line":"        self.assertEqual(1, len(tasks))"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":553,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":554,"context_line":"        self.assertIsNotNone(image[\u0027size\u0027])"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a6904d8c_357e1635","line":554,"range":{"start_line":551,"start_character":0,"end_line":554,"end_character":43},"in_reply_to":"0d66690d_d70b8f1e","updated":"2026-02-23 07:27:38.000000000","message":"Done","commit_id":"b0a540a559bd8bdcde4e233ac5357b4945b03735"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":449,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        start_time \u003d int(time.time())"},{"line_number":452,"context_line":"        # NOTE(pdeore): Task failure scenario also needs to be consider here"},{"line_number":453,"context_line":"        # since there is possibility of hash validation failure and this"},{"line_number":454,"context_line":"        # task will never reach to state success causing timeout issue."},{"line_number":455,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":456,"context_line":"            task \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027][0]"},{"line_number":457,"context_line":"            image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"9251b756_66cb11de","line":454,"range":{"start_line":452,"start_character":0,"end_line":454,"end_character":71},"updated":"2026-02-25 15:02:39.000000000","message":"what is the reason we can see failure here in positive scenario? We are not passing any large amount of data which can trigger timeout while calculation hash and checksum.","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        start_time \u003d int(time.time())"},{"line_number":452,"context_line":"        # NOTE(pdeore): Task failure scenario also needs to be consider here"},{"line_number":453,"context_line":"        # since there is possibility of hash validation failure and this"},{"line_number":454,"context_line":"        # task will never reach to state success causing timeout issue."},{"line_number":455,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":456,"context_line":"            task \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027][0]"},{"line_number":457,"context_line":"            image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"850bce42_8664f31f","line":454,"range":{"start_line":452,"start_character":0,"end_line":454,"end_character":71},"in_reply_to":"05d994fa_363160b6","updated":"2026-03-23 13:13:34.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":true,"context_lines":[{"line_number":449,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        start_time \u003d int(time.time())"},{"line_number":452,"context_line":"        # NOTE(pdeore): Task failure scenario also needs to be consider here"},{"line_number":453,"context_line":"        # since there is possibility of hash validation failure and this"},{"line_number":454,"context_line":"        # task will never reach to state success causing timeout issue."},{"line_number":455,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":456,"context_line":"            task \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027][0]"},{"line_number":457,"context_line":"            image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"05d994fa_363160b6","line":454,"range":{"start_line":452,"start_character":0,"end_line":454,"end_character":71},"in_reply_to":"9251b756_66cb11de","updated":"2026-02-26 11:06:59.000000000","message":"yeah right ! failure is not expected here.","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":499,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        start_time \u003d int(time.time())"},{"line_number":502,"context_line":"        # NOTE(pdeore): Task failure scenario also needs to be consider here"},{"line_number":503,"context_line":"        # since there is possibility of hash validation failure and this task"},{"line_number":504,"context_line":"        # will never reach to state success causing timeout issue."},{"line_number":505,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":506,"context_line":"            task \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027][0]"},{"line_number":507,"context_line":"            image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"5aefee49_a983281a","line":504,"range":{"start_line":502,"start_character":0,"end_line":504,"end_character":66},"updated":"2026-02-25 15:02:39.000000000","message":"ditto","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":499,"context_line":"                                       validation_data\u003dvalidation_data)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        start_time \u003d int(time.time())"},{"line_number":502,"context_line":"        # NOTE(pdeore): Task failure scenario also needs to be consider here"},{"line_number":503,"context_line":"        # since there is possibility of hash validation failure and this task"},{"line_number":504,"context_line":"        # will never reach to state success causing timeout issue."},{"line_number":505,"context_line":"        while int(time.time()) - start_time \u003c self.client.build_timeout:"},{"line_number":506,"context_line":"            task \u003d self.client.show_image_tasks(image[\u0027id\u0027])[\u0027tasks\u0027][0]"},{"line_number":507,"context_line":"            image \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"6201a219_0ed9d8a0","line":504,"range":{"start_line":502,"start_character":0,"end_line":504,"end_character":66},"in_reply_to":"5aefee49_a983281a","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":525,"context_line":"            self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":526,"context_line":"        self.assertEqual(1, len(tasks))"},{"line_number":527,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":528,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":529,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":530,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":531,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"95ad6ea9_9a959b6f","line":531,"range":{"start_line":528,"start_character":0,"end_line":531,"end_character":58},"updated":"2026-02-25 15:02:39.000000000","message":"if you add status and os_hash_algo to private method _assertSuccess then you can call it here as well.","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[{"line_number":525,"context_line":"            self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":526,"context_line":"        self.assertEqual(1, len(tasks))"},{"line_number":527,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":528,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":529,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":530,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":531,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fdc55074_4320c9e2","line":531,"range":{"start_line":528,"start_character":0,"end_line":531,"end_character":58},"in_reply_to":"09343656_53f9bd7e","updated":"2026-03-23 13:13:34.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":true,"context_lines":[{"line_number":525,"context_line":"            self.client, image[\u0027id\u0027], \u0027success\u0027)"},{"line_number":526,"context_line":"        self.assertEqual(1, len(tasks))"},{"line_number":527,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":528,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":529,"context_line":"        self.assertEqual(\u0027sha512\u0027, image[\u0027os_hash_algo\u0027])"},{"line_number":530,"context_line":"        self.assertEqual(expect_c, image[\u0027checksum\u0027])"},{"line_number":531,"context_line":"        self.assertEqual(expect_h, image[\u0027os_hash_value\u0027])"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"09343656_53f9bd7e","line":531,"range":{"start_line":528,"start_character":0,"end_line":531,"end_character":58},"in_reply_to":"95ad6ea9_9a959b6f","updated":"2026-02-26 11:06:59.000000000","message":"yeah, adding os_hash_algo but i think no need to parameterize status since it\u0027s always \u0027active\u0027 for success.","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"dd9c740d98931ebbaef3321ff418dfc77898ac20","unresolved":true,"context_lines":[{"line_number":615,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":616,"context_line":"            # API is not new enough to support add location API"},{"line_number":617,"context_line":"            skip_msg \u003d ("},{"line_number":618,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":619,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"16a7fd85_b5211a5b","line":618,"updated":"2026-03-23 08:03:50.000000000","message":"The %s in the skip message is not being substituted.\n\nCurrently, it will literally print %s skipped as Glance does not support v2.17 . I assume you meant it to be substituted by the class name ?","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"93d09ec72937b09b93d1a6b59d0242fc12f2d6cb","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":616,"context_line":"            # API is not new enough to support add location API"},{"line_number":617,"context_line":"            skip_msg \u003d ("},{"line_number":618,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":619,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    @decorators.idempotent_id(\u00279ca1b69e-375e-11ee-be56-0242ac120002\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"5bd17e43_d6c9ac0e","line":618,"in_reply_to":"16a7fd85_b5211a5b","updated":"2026-03-23 08:54:01.000000000","message":"Done","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"dd9c740d98931ebbaef3321ff418dfc77898ac20","unresolved":true,"context_lines":[{"line_number":649,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":650,"context_line":"            # API is not new enough to support add location API"},{"line_number":651,"context_line":"            skip_msg \u003d ("},{"line_number":652,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":653,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        if not len(cls.available_stores) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":25,"id":"a7cae335_49b4320e","line":652,"updated":"2026-03-23 08:03:50.000000000","message":"ditto","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"93d09ec72937b09b93d1a6b59d0242fc12f2d6cb","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        if not cls.versions_client.has_version(\u00272.17\u0027):"},{"line_number":650,"context_line":"            # API is not new enough to support add location API"},{"line_number":651,"context_line":"            skip_msg \u003d ("},{"line_number":652,"context_line":"                \u0027%s skipped as Glance does not support v2.17\u0027)"},{"line_number":653,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        if not len(cls.available_stores) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":25,"id":"51b6dcc2_bc637bb5","line":652,"in_reply_to":"a7cae335_49b4320e","updated":"2026-03-23 08:54:01.000000000","message":"Done","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"dd9c740d98931ebbaef3321ff418dfc77898ac20","unresolved":true,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":656,"context_line":"            skip_msg \u003d ("},{"line_number":657,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":658,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":659,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"afce73ff_ae3ad1ad","line":657,"updated":"2026-03-23 08:03:50.000000000","message":"typo here `available`\n\nmaybe its more clear to fix formatting something like\n\nskip_msg \u003d (\n    \u0027%s skipped as only one store is available: %s\u0027 %\n    (cls.__name__, cls.available_stores)\n)","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"93d09ec72937b09b93d1a6b59d0242fc12f2d6cb","unresolved":false,"context_lines":[{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":656,"context_line":"            skip_msg \u003d ("},{"line_number":657,"context_line":"                \u0027%s skipped as only one store is avalible\u0027"},{"line_number":658,"context_line":"                \u0027%s\u0027 % (cls.__name__, cls.available_stores))"},{"line_number":659,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":660,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"77dedec1_2d2c0040","line":657,"in_reply_to":"afce73ff_ae3ad1ad","updated":"2026-03-23 08:54:01.000000000","message":"Done","commit_id":"dd6ebb4f74b689a4280c01293645cdaf029fbf7c"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"9fd08c8e15bba9b1451b1b17520f5d0bdf643ee1","unresolved":true,"context_lines":[{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":658,"context_line":"            skip_msg \u003d ("},{"line_number":659,"context_line":"                \u0027%s skipped as only one store is availble: %s\u0027"},{"line_number":660,"context_line":"                % (cls.__name__, cls.available_stores))"},{"line_number":661,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"039beef5_3426687d","line":659,"range":{"start_line":659,"start_character":49,"end_line":659,"end_character":57},"updated":"2026-03-23 17:06:36.000000000","message":"nit : available","commit_id":"0dd6d79be6e72569b89b1a4a3ac04be0e2ec4d59"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"653a502a3889bd7db5facf6b3a27e6a01e2e35ba","unresolved":false,"context_lines":[{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        if not len(cls.available_stores) \u003e 1:"},{"line_number":658,"context_line":"            skip_msg \u003d ("},{"line_number":659,"context_line":"                \u0027%s skipped as only one store is availble: %s\u0027"},{"line_number":660,"context_line":"                % (cls.__name__, cls.available_stores))"},{"line_number":661,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"c41d34b1_7cc1f432","line":659,"range":{"start_line":659,"start_character":49,"end_line":659,"end_character":57},"in_reply_to":"039beef5_3426687d","updated":"2026-04-01 13:20:03.000000000","message":"Done","commit_id":"0dd6d79be6e72569b89b1a4a3ac04be0e2ec4d59"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":440,"context_line":"        self.assertIn(\u0027correct size\u0027, error_msg)"},{"line_number":441,"context_line":"        self.assertIn(\u0027sha512\u0027, error_msg)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Add location with os_hash_algo other than sha512"},{"line_number":444,"context_line":"        validation_data \u003d {"},{"line_number":445,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha256\u0027,"},{"line_number":446,"context_line":"            \u0027os_hash_value\u0027: expect_h}"}],"source_content_type":"text/x-python","patch_set":30,"id":"4a7cb04d_3f9db72f","line":443,"range":{"start_line":443,"start_character":8,"end_line":443,"end_character":58},"updated":"2026-04-01 20:41:24.000000000","message":"Add location with matching hash_value and hash algo","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        self.assertIn(\u0027correct size\u0027, error_msg)"},{"line_number":441,"context_line":"        self.assertIn(\u0027sha512\u0027, error_msg)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # Add location with os_hash_algo other than sha512"},{"line_number":444,"context_line":"        validation_data \u003d {"},{"line_number":445,"context_line":"            \u0027os_hash_algo\u0027: \u0027sha256\u0027,"},{"line_number":446,"context_line":"            \u0027os_hash_value\u0027: expect_h}"}],"source_content_type":"text/x-python","patch_set":30,"id":"2cfe97cf_207455e0","line":443,"range":{"start_line":443,"start_character":8,"end_line":443,"end_character":58},"in_reply_to":"4a7cb04d_3f9db72f","updated":"2026-04-06 08:54:06.000000000","message":"Acknowledged","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":473,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":474,"context_line":"        _assertFailure(image)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        # Add location with valid validation_data"},{"line_number":479,"context_line":"        # Create an image 3"}],"source_content_type":"text/x-python","patch_set":30,"id":"71cdfb78_17db2cb7","line":476,"range":{"start_line":476,"start_character":0,"end_line":476,"end_character":62},"updated":"2026-04-01 20:41:24.000000000","message":"we need to add this cleanup right after create_image L463. because any error after creating image and before this clenaup can lead to leaked image.\n\nSame for the other places also.","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":474,"context_line":"        _assertFailure(image)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        # Add location with valid validation_data"},{"line_number":479,"context_line":"        # Create an image 3"}],"source_content_type":"text/x-python","patch_set":30,"id":"84fd41ef_89025e15","line":476,"range":{"start_line":476,"start_character":0,"end_line":476,"end_character":62},"in_reply_to":"71cdfb78_17db2cb7","updated":"2026-04-06 08:54:06.000000000","message":"Done","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        # Add location with valid validation_data"},{"line_number":479,"context_line":"        # Create an image 3"},{"line_number":480,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":481,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"b52e4be8_071f6db1","line":478,"range":{"start_line":478,"start_character":0,"end_line":478,"end_character":49},"updated":"2026-04-01 20:41:24.000000000","message":"what is different here from L444, testing positive case with sha256 or sha512 should not be any difference right?","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":false,"context_lines":[{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        # Add location with valid validation_data"},{"line_number":479,"context_line":"        # Create an image 3"},{"line_number":480,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":481,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"72552f99_ee461741","line":478,"range":{"start_line":478,"start_character":0,"end_line":478,"end_character":49},"in_reply_to":"b52e4be8_071f6db1","updated":"2026-04-06 08:54:06.000000000","message":"Acknowledged","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        # Add Location with valid URL and do_secure_hash \u003d True"},{"line_number":501,"context_line":"        # without validation_data"},{"line_number":502,"context_line":"        # Create an image 4"},{"line_number":503,"context_line":"        image \u003d self.client.create_image(container_format\u003d\u0027bare\u0027,"},{"line_number":504,"context_line":"                                         disk_format\u003d\u0027raw\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"9dc30808_0e490cbf","line":501,"range":{"start_line":500,"start_character":0,"end_line":501,"end_character":33},"updated":"2026-04-01 20:41:24.000000000","message":"how we are making sure do_secure_hash \u003d True is set in config here. seeing the test running this code will always have the do_secure_hash \u003d True so that is true for all the cases above right?","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"    def _add_location_with_do_secure_hash_false(self):"},{"line_number":517,"context_line":"        # Add Location with valid URL and do_secure_hash \u003d False"},{"line_number":518,"context_line":"        # with validation_data"},{"line_number":519,"context_line":"        # Create an image 1"}],"source_content_type":"text/x-python","patch_set":30,"id":"b1c57649_1dd03e11","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":47},"updated":"2026-04-01 20:41:24.000000000","message":"I am not sure what is different in operations calling from do_secure_hash\u003dTrue vs do_secure_hash\u003dfalse. The difference should be how glance behaves and the assertion to verify. Instead of these two functions, we should have one and handle the assert and other verification part based on arg do_secure_hash\u003dTrue (same as you are doing in scenario test https://review.opendev.org/c/openstack/tempest/+/891026/30/tempest/scenario/test_snapshots_with_add_location.py#98) \n\nsomething like:\n\ninstead of _add_location_for_image_with_do_secure_hash_true and _add_location_for_image_with_do_secure_hash_false, have only one function which can accept do_secure_hash as arg\n\n_add_location_and_verify(do_secure_hash\u003dTrue)","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        self.addCleanup(self.client.delete_image, image[\u0027id\u0027])"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"    def _add_location_with_do_secure_hash_false(self):"},{"line_number":517,"context_line":"        # Add Location with valid URL and do_secure_hash \u003d False"},{"line_number":518,"context_line":"        # with validation_data"},{"line_number":519,"context_line":"        # Create an image 1"}],"source_content_type":"text/x-python","patch_set":30,"id":"fd608572_9f17144d","line":516,"range":{"start_line":516,"start_character":8,"end_line":516,"end_character":47},"in_reply_to":"b1c57649_1dd03e11","updated":"2026-04-06 08:54:06.000000000","message":"Done","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"10c53d0d134c0153b6745aa6a394df043e4858f3","unresolved":true,"context_lines":[{"line_number":671,"context_line":"        self._add_location_for_image_with_do_secure_hash_true()"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":674,"context_line":"    @testtools.skipIf("},{"line_number":675,"context_line":"        CONF.image_feature_enabled.do_secure_hash,"},{"line_number":676,"context_line":"        \u0027do_secure_hash is enabled\u0027)"},{"line_number":677,"context_line":"    @testtools.skipIf("},{"line_number":678,"context_line":"        not CONF.image_feature_enabled.http_store_enabled,"},{"line_number":679,"context_line":"        \u0027http store is disabled\u0027)"},{"line_number":680,"context_line":"    def test_add_location_with_do_secure_hash_false(self):"},{"line_number":681,"context_line":"        self._add_location_with_do_secure_hash_false()"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"49f62933_b729298b","line":679,"range":{"start_line":674,"start_character":0,"end_line":679,"end_character":33},"updated":"2026-04-01 20:41:24.000000000","message":"I am wondering which job has the config where do_secure_hash is false and http_store_enabled is enabled. If we do not have any such job, then either we need to add one or try to cover the do_secure_has\u003dfalse case in glance functional tests?\n\nNOTE: we need some job either in tempest or glance side where we can see the test running fine.","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"904a538bb82951fe71adfa85dd6d885e967e7d36","unresolved":true,"context_lines":[{"line_number":671,"context_line":"        self._add_location_for_image_with_do_secure_hash_true()"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":674,"context_line":"    @testtools.skipIf("},{"line_number":675,"context_line":"        CONF.image_feature_enabled.do_secure_hash,"},{"line_number":676,"context_line":"        \u0027do_secure_hash is enabled\u0027)"},{"line_number":677,"context_line":"    @testtools.skipIf("},{"line_number":678,"context_line":"        not CONF.image_feature_enabled.http_store_enabled,"},{"line_number":679,"context_line":"        \u0027http store is disabled\u0027)"},{"line_number":680,"context_line":"    def test_add_location_with_do_secure_hash_false(self):"},{"line_number":681,"context_line":"        self._add_location_with_do_secure_hash_false()"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"f38f1e2d_0143e8f3","line":679,"range":{"start_line":674,"start_character":0,"end_line":679,"end_character":33},"in_reply_to":"247e5ed7_58444fc5","updated":"2026-04-29 00:15:07.000000000","message":"I can see it is configured in https://review.opendev.org/c/openstack/glance/+/983415 but that nhas disabled the other test of MultiStoresImportImagesTest\n tempest.api.image.v2.test_images.MultistoreLocationImportTest.test_add_location_for_image_with_do_secure_hash_true ... SKIPPED: do_secure_hash is disabled","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"81ac26563c8ea4d947ba907f20ee085d24f01d85","unresolved":true,"context_lines":[{"line_number":671,"context_line":"        self._add_location_for_image_with_do_secure_hash_true()"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":674,"context_line":"    @testtools.skipIf("},{"line_number":675,"context_line":"        CONF.image_feature_enabled.do_secure_hash,"},{"line_number":676,"context_line":"        \u0027do_secure_hash is enabled\u0027)"},{"line_number":677,"context_line":"    @testtools.skipIf("},{"line_number":678,"context_line":"        not CONF.image_feature_enabled.http_store_enabled,"},{"line_number":679,"context_line":"        \u0027http store is disabled\u0027)"},{"line_number":680,"context_line":"    def test_add_location_with_do_secure_hash_false(self):"},{"line_number":681,"context_line":"        self._add_location_with_do_secure_hash_false()"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"dd92513e_29df839a","line":679,"range":{"start_line":674,"start_character":0,"end_line":679,"end_character":33},"in_reply_to":"49f62933_b729298b","updated":"2026-04-06 08:54:06.000000000","message":"Yeah right. Currently there is no CI job with do_secure_hash\u003dFalse and http_store_enabled\u003dTrue, so these tests are being skipped in the tempest gate. I have verified these tests pass locally with do_secure_hash\u003dFalse configured in both Glance and tempest and also we have covered that in glance functional tests as well.\n\nI will modify some job for this.","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93976bd558413ea187a4753f687775ea5149d731","unresolved":true,"context_lines":[{"line_number":671,"context_line":"        self._add_location_for_image_with_do_secure_hash_true()"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @decorators.idempotent_id(\u0027507ecfef-9e1c-40c0-b801-64bf00a71ab2\u0027)"},{"line_number":674,"context_line":"    @testtools.skipIf("},{"line_number":675,"context_line":"        CONF.image_feature_enabled.do_secure_hash,"},{"line_number":676,"context_line":"        \u0027do_secure_hash is enabled\u0027)"},{"line_number":677,"context_line":"    @testtools.skipIf("},{"line_number":678,"context_line":"        not CONF.image_feature_enabled.http_store_enabled,"},{"line_number":679,"context_line":"        \u0027http store is disabled\u0027)"},{"line_number":680,"context_line":"    def test_add_location_with_do_secure_hash_false(self):"},{"line_number":681,"context_line":"        self._add_location_with_do_secure_hash_false()"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"247e5ed7_58444fc5","line":679,"range":{"start_line":674,"start_character":0,"end_line":679,"end_character":33},"in_reply_to":"dd92513e_29df839a","updated":"2026-04-08 19:41:12.000000000","message":"ack, if you do not find a suitable job to disable do_secure_hash, then I think it is enough to cover only the do_secure_hash\u003dTrue case in tempest tests, and do_secure_hash\u003dFalse should be enough to test in functional tests. what you say?","commit_id":"b0bb27d99048ecf34e2f2cc8e51a343a4f0e3cf8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93976bd558413ea187a4753f687775ea5149d731","unresolved":true,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _add_location_and_verify(self, do_secure_hash\u003dTrue):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        def _assertSuccess(image, os_hash_value, checksum,"},{"line_number":334,"context_line":"                           os_hash_algo\u003d\u0027sha256\u0027):"},{"line_number":335,"context_line":"            self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":336,"context_line":"            self.assertEqual(os_hash_algo, image[\u0027os_hash_algo\u0027])"},{"line_number":337,"context_line":"            self.assertEqual(checksum, image[\u0027checksum\u0027])"},{"line_number":338,"context_line":"            self.assertEqual(os_hash_value, image[\u0027os_hash_value\u0027])"},{"line_number":339,"context_line":"            # NOTE(pdeore): \u0027stores\u0027 property will be available to"},{"line_number":340,"context_line":"            # image only if multistores are enabled hence can\u0027t be"},{"line_number":341,"context_line":"            # assert when single store is enabled"},{"line_number":342,"context_line":"            if len(self.get_available_stores()) \u003e 1:"},{"line_number":343,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        def _assertFailure(image):"},{"line_number":346,"context_line":"            self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":347,"context_line":"            self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":348,"context_line":"            self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":349,"context_line":"            self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":350,"context_line":"            # NOTE(pdeore): `http` store doesn\u0027t allow deletion of"},{"line_number":351,"context_line":"            # location hence location will be there for `queued`"},{"line_number":352,"context_line":"            # image."},{"line_number":353,"context_line":"            # see: https://bugs.launchpad.net/glance/+bug/2076648"},{"line_number":354,"context_line":"            # \u0027stores\u0027 property will be available to image only if"},{"line_number":355,"context_line":"            # multistores are enabled hence can\u0027t be assert when"},{"line_number":356,"context_line":"            # single store is enabled"},{"line_number":357,"context_line":"            if len(self.get_available_stores()) \u003e 1:"},{"line_number":358,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        uuid \u003d data_utils.rand_uuid()"},{"line_number":361,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"e7c1b2b2_bc39166e","line":358,"range":{"start_line":333,"start_character":0,"end_line":358,"end_character":56},"updated":"2026-04-08 19:41:12.000000000","message":"both assert also can be outside of _add_location_and_verify because it is already a very long function and becoming unreadable","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"19f9dfb871925614c38f9ab13606bcbf56f061ed","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _add_location_and_verify(self, do_secure_hash\u003dTrue):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        def _assertSuccess(image, os_hash_value, checksum,"},{"line_number":334,"context_line":"                           os_hash_algo\u003d\u0027sha256\u0027):"},{"line_number":335,"context_line":"            self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":336,"context_line":"            self.assertEqual(os_hash_algo, image[\u0027os_hash_algo\u0027])"},{"line_number":337,"context_line":"            self.assertEqual(checksum, image[\u0027checksum\u0027])"},{"line_number":338,"context_line":"            self.assertEqual(os_hash_value, image[\u0027os_hash_value\u0027])"},{"line_number":339,"context_line":"            # NOTE(pdeore): \u0027stores\u0027 property will be available to"},{"line_number":340,"context_line":"            # image only if multistores are enabled hence can\u0027t be"},{"line_number":341,"context_line":"            # assert when single store is enabled"},{"line_number":342,"context_line":"            if len(self.get_available_stores()) \u003e 1:"},{"line_number":343,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"        def _assertFailure(image):"},{"line_number":346,"context_line":"            self.assertEqual(\u0027queued\u0027, image[\u0027status\u0027])"},{"line_number":347,"context_line":"            self.assertIsNone(image[\u0027os_hash_algo\u0027])"},{"line_number":348,"context_line":"            self.assertIsNone(image[\u0027checksum\u0027])"},{"line_number":349,"context_line":"            self.assertIsNone(image[\u0027os_hash_value\u0027])"},{"line_number":350,"context_line":"            # NOTE(pdeore): `http` store doesn\u0027t allow deletion of"},{"line_number":351,"context_line":"            # location hence location will be there for `queued`"},{"line_number":352,"context_line":"            # image."},{"line_number":353,"context_line":"            # see: https://bugs.launchpad.net/glance/+bug/2076648"},{"line_number":354,"context_line":"            # \u0027stores\u0027 property will be available to image only if"},{"line_number":355,"context_line":"            # multistores are enabled hence can\u0027t be assert when"},{"line_number":356,"context_line":"            # single store is enabled"},{"line_number":357,"context_line":"            if len(self.get_available_stores()) \u003e 1:"},{"line_number":358,"context_line":"                self.assertEqual(\u0027web\u0027, image[\u0027stores\u0027])"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        uuid \u003d data_utils.rand_uuid()"},{"line_number":361,"context_line":"        image_name \u003d data_utils.rand_name(\u0027image\u0027)"}],"source_content_type":"text/x-python","patch_set":31,"id":"9016b146_5ecf497a","line":358,"range":{"start_line":333,"start_character":0,"end_line":358,"end_character":56},"in_reply_to":"e7c1b2b2_bc39166e","updated":"2026-04-13 05:02:40.000000000","message":"Acknowledged","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"b173078bbf6d2aef5eb4c1a07db73ff892a30508","unresolved":true,"context_lines":[{"line_number":387,"context_line":"                        \u0027correct size\u0027 in error_msg.lower())"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        # Missing os_hash_algo (only os_hash_value provided)"},{"line_number":390,"context_line":"        with requests.get(url) as r:"},{"line_number":391,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":392,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"564d4672_573e3ee0","line":390,"range":{"start_line":390,"start_character":0,"end_line":390,"end_character":36},"updated":"2026-04-07 12:28:35.000000000","message":"I think that there be a timeout incase requests.get(url) hangs forever. Something like \"requests.get(url, timeout\u003d60)? Or maybe 180 if we want to check for 3 minutes.","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"ff6e6ecba7635533d12c363514a634ec749ef898","unresolved":true,"context_lines":[{"line_number":387,"context_line":"                        \u0027correct size\u0027 in error_msg.lower())"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        # Missing os_hash_algo (only os_hash_value provided)"},{"line_number":390,"context_line":"        with requests.get(url) as r:"},{"line_number":391,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":392,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"32a24a9f_1a2ca16e","line":390,"range":{"start_line":390,"start_character":0,"end_line":390,"end_character":36},"in_reply_to":"1a720555_1419b4de","updated":"2026-04-10 13:39:45.000000000","message":"+1","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"19f9dfb871925614c38f9ab13606bcbf56f061ed","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                        \u0027correct size\u0027 in error_msg.lower())"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        # Missing os_hash_algo (only os_hash_value provided)"},{"line_number":390,"context_line":"        with requests.get(url) as r:"},{"line_number":391,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":392,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"6da553aa_0f1d2b5d","line":390,"range":{"start_line":390,"start_character":0,"end_line":390,"end_character":36},"in_reply_to":"1a720555_1419b4de","updated":"2026-04-13 05:02:40.000000000","message":"Acknowledged","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"93976bd558413ea187a4753f687775ea5149d731","unresolved":true,"context_lines":[{"line_number":387,"context_line":"                        \u0027correct size\u0027 in error_msg.lower())"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        # Missing os_hash_algo (only os_hash_value provided)"},{"line_number":390,"context_line":"        with requests.get(url) as r:"},{"line_number":391,"context_line":"            expect_h \u003d str(hashlib.sha512(r.content).hexdigest())"},{"line_number":392,"context_line":"        validation_data \u003d {\u0027os_hash_value\u0027: expect_h}"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"1a720555_1419b4de","line":390,"range":{"start_line":390,"start_character":0,"end_line":390,"end_character":36},"in_reply_to":"564d4672_573e3ee0","updated":"2026-04-08 19:41:12.000000000","message":"I think 60 is more than enough and timeout if it does not respond.","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"b173078bbf6d2aef5eb4c1a07db73ff892a30508","unresolved":true,"context_lines":[{"line_number":414,"context_line":"            f\"Error message should mention invalid hash algo: {error_msg}\")"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        # Mismatch hash_value size with hash algo"},{"line_number":417,"context_line":"        with requests.get(url) as r:"},{"line_number":418,"context_line":"            expect_c \u003d str(hashlib.md5(r.content,"},{"line_number":419,"context_line":"                                       usedforsecurity\u003dFalse).hexdigest())"},{"line_number":420,"context_line":"            expect_h \u003d str(hashlib.sha256(r.content).hexdigest())"}],"source_content_type":"text/x-python","patch_set":31,"id":"66743eb7_82e0bf05","line":417,"updated":"2026-04-07 12:28:35.000000000","message":"Same here, requests(url, timeout\u003dX)","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"19f9dfb871925614c38f9ab13606bcbf56f061ed","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            f\"Error message should mention invalid hash algo: {error_msg}\")"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        # Mismatch hash_value size with hash algo"},{"line_number":417,"context_line":"        with requests.get(url) as r:"},{"line_number":418,"context_line":"            expect_c \u003d str(hashlib.md5(r.content,"},{"line_number":419,"context_line":"                                       usedforsecurity\u003dFalse).hexdigest())"},{"line_number":420,"context_line":"            expect_h \u003d str(hashlib.sha256(r.content).hexdigest())"}],"source_content_type":"text/x-python","patch_set":31,"id":"00f7df75_3b20b588","line":417,"in_reply_to":"66743eb7_82e0bf05","updated":"2026-04-13 05:02:40.000000000","message":"Acknowledged","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":32704,"name":"Alfredo Garcia","email":"alfrgarc@redhat.com","username":"alfrgarc"},"change_message_id":"b173078bbf6d2aef5eb4c1a07db73ff892a30508","unresolved":true,"context_lines":[{"line_number":487,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        if do_secure_hash:"},{"line_number":490,"context_line":"            with requests.get(url) as r:"},{"line_number":491,"context_line":"                expect_c \u003d str(hashlib.md5("},{"line_number":492,"context_line":"                    r.content,"},{"line_number":493,"context_line":"                    usedforsecurity\u003dFalse).hexdigest())"}],"source_content_type":"text/x-python","patch_set":31,"id":"2dd30cf0_8cf02878","line":490,"updated":"2026-04-07 12:28:35.000000000","message":"Same here, requests(url, timeout\u003dX)","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"19f9dfb871925614c38f9ab13606bcbf56f061ed","unresolved":false,"context_lines":[{"line_number":487,"context_line":"        image \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        if do_secure_hash:"},{"line_number":490,"context_line":"            with requests.get(url) as r:"},{"line_number":491,"context_line":"                expect_c \u003d str(hashlib.md5("},{"line_number":492,"context_line":"                    r.content,"},{"line_number":493,"context_line":"                    usedforsecurity\u003dFalse).hexdigest())"}],"source_content_type":"text/x-python","patch_set":31,"id":"e79e79c6_5eec01e7","line":490,"in_reply_to":"2dd30cf0_8cf02878","updated":"2026-04-13 05:02:40.000000000","message":"Acknowledged","commit_id":"3901e625c65e3fbd1207b29d72ad12b9578b74c3"}],"tempest/scenario/test_snapshots_with_add_location.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":24,"id":"a3670c1a_b37ed5bd","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2026-02-25 15:02:39.000000000","message":"2026?","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":24,"id":"44978f01_ba32213c","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"a3670c1a_b37ed5bd","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        # The image should have at least one location entry after"},{"line_number":72,"context_line":"        # Nova/Cinder added the location."},{"line_number":73,"context_line":"        if \u0027locations\u0027 in image:"},{"line_number":74,"context_line":"            self.assertGreater("},{"line_number":75,"context_line":"                len(image[\u0027locations\u0027]), 0,"},{"line_number":76,"context_line":"                \u0027Expected at least one location for %s, but locations \u0027"},{"line_number":77,"context_line":"                \u0027list is empty\u0027 % image_description)"},{"line_number":78,"context_line":"            # Each location should have a url"},{"line_number":79,"context_line":"            for loc in image[\u0027locations\u0027]:"},{"line_number":80,"context_line":"                self.assertIn(\u0027url\u0027, loc,"}],"source_content_type":"text/x-python","patch_set":24,"id":"2311e2e3_4782506f","line":77,"range":{"start_line":74,"start_character":0,"end_line":77,"end_character":52},"updated":"2026-02-25 15:02:39.000000000","message":"why assertGreater? this should be technically image with single location right?","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # The image should have at least one location entry after"},{"line_number":72,"context_line":"        # Nova/Cinder added the location."},{"line_number":73,"context_line":"        if \u0027locations\u0027 in image:"},{"line_number":74,"context_line":"            self.assertGreater("},{"line_number":75,"context_line":"                len(image[\u0027locations\u0027]), 0,"},{"line_number":76,"context_line":"                \u0027Expected at least one location for %s, but locations \u0027"},{"line_number":77,"context_line":"                \u0027list is empty\u0027 % image_description)"},{"line_number":78,"context_line":"            # Each location should have a url"},{"line_number":79,"context_line":"            for loc in image[\u0027locations\u0027]:"},{"line_number":80,"context_line":"                self.assertIn(\u0027url\u0027, loc,"}],"source_content_type":"text/x-python","patch_set":24,"id":"088446b3_87ec5029","line":77,"range":{"start_line":74,"start_character":0,"end_line":77,"end_character":52},"in_reply_to":"2311e2e3_4782506f","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":102,"context_line":"                image[\u0027checksum\u0027],"},{"line_number":103,"context_line":"                \u0027checksum should not be None for %s when \u0027"},{"line_number":104,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":105,"context_line":"            self.assertTrue("},{"line_number":106,"context_line":"                len(image[\u0027checksum\u0027]) \u003e 0,"},{"line_number":107,"context_line":"                \u0027checksum should not be empty for %s when \u0027"},{"line_number":108,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            self.assertIsNotNone("},{"line_number":111,"context_line":"                image[\u0027os_hash_algo\u0027],"}],"source_content_type":"text/x-python","patch_set":24,"id":"1c05f403_f943abe1","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":64},"updated":"2026-02-25 15:02:39.000000000","message":"this is not needed isNotNone is enough I guess","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                image[\u0027checksum\u0027],"},{"line_number":103,"context_line":"                \u0027checksum should not be None for %s when \u0027"},{"line_number":104,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":105,"context_line":"            self.assertTrue("},{"line_number":106,"context_line":"                len(image[\u0027checksum\u0027]) \u003e 0,"},{"line_number":107,"context_line":"                \u0027checksum should not be empty for %s when \u0027"},{"line_number":108,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            self.assertIsNotNone("},{"line_number":111,"context_line":"                image[\u0027os_hash_algo\u0027],"}],"source_content_type":"text/x-python","patch_set":24,"id":"9b22c54b_c28a60e7","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":64},"in_reply_to":"1c05f403_f943abe1","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                image[\u0027os_hash_algo\u0027],"},{"line_number":112,"context_line":"                \u0027os_hash_algo should not be None for %s when \u0027"},{"line_number":113,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":114,"context_line":"            self.assertIn("},{"line_number":115,"context_line":"                image[\u0027os_hash_algo\u0027],"},{"line_number":116,"context_line":"                [\u0027sha256\u0027, \u0027sha512\u0027],"},{"line_number":117,"context_line":"                \u0027os_hash_algo should be a valid hash algorithm for \u0027"},{"line_number":118,"context_line":"                \u0027%s\u0027 % image_description)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            self.assertIsNotNone("},{"line_number":121,"context_line":"                image[\u0027os_hash_value\u0027],"}],"source_content_type":"text/x-python","patch_set":24,"id":"63423d3f_8a68da2b","line":118,"range":{"start_line":114,"start_character":0,"end_line":118,"end_character":41},"updated":"2026-02-25 15:02:39.000000000","message":"ditto","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                image[\u0027os_hash_algo\u0027],"},{"line_number":112,"context_line":"                \u0027os_hash_algo should not be None for %s when \u0027"},{"line_number":113,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":114,"context_line":"            self.assertIn("},{"line_number":115,"context_line":"                image[\u0027os_hash_algo\u0027],"},{"line_number":116,"context_line":"                [\u0027sha256\u0027, \u0027sha512\u0027],"},{"line_number":117,"context_line":"                \u0027os_hash_algo should be a valid hash algorithm for \u0027"},{"line_number":118,"context_line":"                \u0027%s\u0027 % image_description)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            self.assertIsNotNone("},{"line_number":121,"context_line":"                image[\u0027os_hash_value\u0027],"}],"source_content_type":"text/x-python","patch_set":24,"id":"d77925ad_4fd1c677","line":118,"range":{"start_line":114,"start_character":0,"end_line":118,"end_character":41},"in_reply_to":"63423d3f_8a68da2b","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25a5d45fd33672a14d3deaff87c3c64c2064d257","unresolved":true,"context_lines":[{"line_number":121,"context_line":"                image[\u0027os_hash_value\u0027],"},{"line_number":122,"context_line":"                \u0027os_hash_value should not be None for %s when \u0027"},{"line_number":123,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":124,"context_line":"            self.assertTrue("},{"line_number":125,"context_line":"                len(image[\u0027os_hash_value\u0027]) \u003e 0,"},{"line_number":126,"context_line":"                \u0027os_hash_value should not be empty for %s when \u0027"},{"line_number":127,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            LOG.info(\"%s hash verification passed (do_secure_hash\u003dTrue): \""},{"line_number":130,"context_line":"                     \"checksum\u003d%s, os_hash_algo\u003d%s, os_hash_value\u003d%s\","}],"source_content_type":"text/x-python","patch_set":24,"id":"a9a65819_cd5f8dfc","line":127,"range":{"start_line":124,"start_character":0,"end_line":127,"end_character":64},"updated":"2026-02-25 15:02:39.000000000","message":"ditto","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"90c4cc072edaea8ceb4547cae745dc553e1b87e2","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                image[\u0027os_hash_value\u0027],"},{"line_number":122,"context_line":"                \u0027os_hash_value should not be None for %s when \u0027"},{"line_number":123,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":124,"context_line":"            self.assertTrue("},{"line_number":125,"context_line":"                len(image[\u0027os_hash_value\u0027]) \u003e 0,"},{"line_number":126,"context_line":"                \u0027os_hash_value should not be empty for %s when \u0027"},{"line_number":127,"context_line":"                \u0027do_secure_hash is enabled\u0027 % image_description)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            LOG.info(\"%s hash verification passed (do_secure_hash\u003dTrue): \""},{"line_number":130,"context_line":"                     \"checksum\u003d%s, os_hash_algo\u003d%s, os_hash_value\u003d%s\","}],"source_content_type":"text/x-python","patch_set":24,"id":"da619e6e_cb0bd56f","line":127,"range":{"start_line":124,"start_character":0,"end_line":127,"end_character":64},"in_reply_to":"a9a65819_cd5f8dfc","updated":"2026-02-26 11:06:59.000000000","message":"Done","commit_id":"b97e7952386f862ddcd1ce01adbddf4e4a99b90f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"7b0a956c6194c225f96f41b2658cdb6041ed1f95","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    Cinder when using new location APIs."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Nova and Cinder use new location APIs to create images (instance"},{"line_number":35,"context_line":"    snapshot and volume upload to image). These tests verify that:"},{"line_number":36,"context_line":"    1. The image location is properly added via the new add location API."},{"line_number":37,"context_line":"    2. When do_secure_hash is enabled, the hash (os_hash_value) and"},{"line_number":38,"context_line":"       checksum are properly calculated asynchronously."}],"source_content_type":"text/x-python","patch_set":26,"id":"3a3df039_ef5bcb36","line":35,"updated":"2026-03-23 13:00:40.000000000","message":"tox-doc job is failing, it expects a blank line after this (before the new list starts)","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    Cinder when using new location APIs."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Nova and Cinder use new location APIs to create images (instance"},{"line_number":35,"context_line":"    snapshot and volume upload to image). These tests verify that:"},{"line_number":36,"context_line":"    1. The image location is properly added via the new add location API."},{"line_number":37,"context_line":"    2. When do_secure_hash is enabled, the hash (os_hash_value) and"},{"line_number":38,"context_line":"       checksum are properly calculated asynchronously."}],"source_content_type":"text/x-python","patch_set":26,"id":"636fd797_d854932f","line":35,"in_reply_to":"3a3df039_ef5bcb36","updated":"2026-03-23 13:13:34.000000000","message":"Acknowledged","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"7b0a956c6194c225f96f41b2658cdb6041ed1f95","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Nova and Cinder use new location APIs to create images (instance"},{"line_number":35,"context_line":"    snapshot and volume upload to image). These tests verify that:"},{"line_number":36,"context_line":"    1. The image location is properly added via the new add location API."},{"line_number":37,"context_line":"    2. When do_secure_hash is enabled, the hash (os_hash_value) and"},{"line_number":38,"context_line":"       checksum are properly calculated asynchronously."},{"line_number":39,"context_line":"    3. When do_secure_hash is disabled, hash and checksum are not"}],"source_content_type":"text/x-python","patch_set":26,"id":"b1d97b32_8a85940f","line":36,"updated":"2026-03-23 13:00:40.000000000","message":"Maybe you might need to use * instead of numbered list","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"7b0a956c6194c225f96f41b2658cdb6041ed1f95","unresolved":true,"context_lines":[{"line_number":149,"context_line":"          do_secure_hash is enabled"},{"line_number":150,"context_line":"        - No hash values when do_secure_hash is disabled"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        Steps:"},{"line_number":153,"context_line":"        1. Create an instance from the configured image"},{"line_number":154,"context_line":"        2. Create a snapshot of the instance"},{"line_number":155,"context_line":"        3. Wait for the background image task to complete"}],"source_content_type":"text/x-python","patch_set":26,"id":"d5285212_f3258408","line":152,"updated":"2026-03-23 13:00:40.000000000","message":"blank line here","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[{"line_number":149,"context_line":"          do_secure_hash is enabled"},{"line_number":150,"context_line":"        - No hash values when do_secure_hash is disabled"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        Steps:"},{"line_number":153,"context_line":"        1. Create an instance from the configured image"},{"line_number":154,"context_line":"        2. Create a snapshot of the instance"},{"line_number":155,"context_line":"        3. Wait for the background image task to complete"}],"source_content_type":"text/x-python","patch_set":26,"id":"8aaf763f_3ff1547e","line":152,"in_reply_to":"d5285212_f3258408","updated":"2026-03-23 13:13:34.000000000","message":"Done","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"7b0a956c6194c225f96f41b2658cdb6041ed1f95","unresolved":true,"context_lines":[{"line_number":185,"context_line":"          do_secure_hash is enabled"},{"line_number":186,"context_line":"        - No hash values when do_secure_hash is disabled"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        Steps:"},{"line_number":189,"context_line":"        1. Create a volume"},{"line_number":190,"context_line":"        2. Upload the volume to Glance as an image"},{"line_number":191,"context_line":"        3. Wait for the background image task to complete"}],"source_content_type":"text/x-python","patch_set":26,"id":"e0b68653_302a54f4","line":188,"updated":"2026-03-23 13:00:40.000000000","message":"blank line after this","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"a77458bbc61986c173c123f9a613af1aab548452","unresolved":false,"context_lines":[{"line_number":185,"context_line":"          do_secure_hash is enabled"},{"line_number":186,"context_line":"        - No hash values when do_secure_hash is disabled"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        Steps:"},{"line_number":189,"context_line":"        1. Create a volume"},{"line_number":190,"context_line":"        2. Upload the volume to Glance as an image"},{"line_number":191,"context_line":"        3. Wait for the background image task to complete"}],"source_content_type":"text/x-python","patch_set":26,"id":"5c4d4160_52b6c913","line":188,"in_reply_to":"e0b68653_302a54f4","updated":"2026-03-23 13:13:34.000000000","message":"Done","commit_id":"481dbae2f9f5789797ae137eac9e14c653c1a87f"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"712bd9257503b08ecb6370d162bf109a5ff3d383","unresolved":true,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        This test verifies that when Nova creates a snapshot of an"},{"line_number":146,"context_line":"        instance using the new add location API, the resulting image"},{"line_number":147,"context_line":"        in Glance has:"},{"line_number":148,"context_line":"        - A valid location entry added via the new add location API"},{"line_number":149,"context_line":"        - Proper checksum, os_hash_algo and os_hash_value when"},{"line_number":150,"context_line":"          do_secure_hash is enabled"}],"source_content_type":"text/x-python","patch_set":28,"id":"7b1bdbec_5532c140","line":147,"updated":"2026-03-23 14:59:30.000000000","message":"So sorry I missed this but there should be a blank line here as well","commit_id":"cf78022b8dc5f5cbd12cafd373a3bfaf4c25d686"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"3ae1a239426e7e2fa076934f07443ab1001b0b74","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        This test verifies that when Nova creates a snapshot of an"},{"line_number":146,"context_line":"        instance using the new add location API, the resulting image"},{"line_number":147,"context_line":"        in Glance has:"},{"line_number":148,"context_line":"        - A valid location entry added via the new add location API"},{"line_number":149,"context_line":"        - Proper checksum, os_hash_algo and os_hash_value when"},{"line_number":150,"context_line":"          do_secure_hash is enabled"}],"source_content_type":"text/x-python","patch_set":28,"id":"b6ba41a9_e5277ca2","line":147,"in_reply_to":"7b1bdbec_5532c140","updated":"2026-03-23 15:54:22.000000000","message":"Done","commit_id":"cf78022b8dc5f5cbd12cafd373a3bfaf4c25d686"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"712bd9257503b08ecb6370d162bf109a5ff3d383","unresolved":true,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        This test verifies that when Cinder uploads a volume as an"},{"line_number":183,"context_line":"        image to Glance using the new add location API, the resulting"},{"line_number":184,"context_line":"        image has:"},{"line_number":185,"context_line":"        - A valid location entry added via the new add location API"},{"line_number":186,"context_line":"        - Proper checksum, os_hash_algo and os_hash_value when"},{"line_number":187,"context_line":"          do_secure_hash is enabled"}],"source_content_type":"text/x-python","patch_set":28,"id":"2ba21e90_bb19d2e3","line":184,"updated":"2026-03-23 14:59:30.000000000","message":"blank line here as well\n\nWe don\u0027t need to wait for all the jobs to run. We can check the build history from here https://zuul.opendev.org/t/openstack/builds?job_name\u003dopenstack-tox-docs\u0026project\u003dopenstack/tempest for your change in about 10 mins to see anything else is needed","commit_id":"cf78022b8dc5f5cbd12cafd373a3bfaf4c25d686"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"3ae1a239426e7e2fa076934f07443ab1001b0b74","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        This test verifies that when Cinder uploads a volume as an"},{"line_number":183,"context_line":"        image to Glance using the new add location API, the resulting"},{"line_number":184,"context_line":"        image has:"},{"line_number":185,"context_line":"        - A valid location entry added via the new add location API"},{"line_number":186,"context_line":"        - Proper checksum, os_hash_algo and os_hash_value when"},{"line_number":187,"context_line":"          do_secure_hash is enabled"}],"source_content_type":"text/x-python","patch_set":28,"id":"f258f31a_9e9b6f6a","line":184,"in_reply_to":"2ba21e90_bb19d2e3","updated":"2026-03-23 15:54:22.000000000","message":"Done","commit_id":"cf78022b8dc5f5cbd12cafd373a3bfaf4c25d686"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"904a538bb82951fe71adfa85dd6d885e967e7d36","unresolved":true,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def skip_checks(cls):"},{"line_number":46,"context_line":"        super(TestImageHashVerification, cls).skip_checks()"},{"line_number":47,"context_line":"        if not CONF.compute_feature_enabled.snapshot:"},{"line_number":48,"context_line":"            raise cls.skipException(\"Snapshotting is not available.\")"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"6bc6102e_2efedfe5","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":59},"updated":"2026-04-29 00:15:07.000000000","message":"does not it need to be skipped for \u003cv2.17 version? like you are doing in API tests?","commit_id":"2fba3259880fa3f4961ea85872f97e6d203503ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"904a538bb82951fe71adfa85dd6d885e967e7d36","unresolved":true,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @decorators.idempotent_id(\u0027a1b2c3d4-e5f6-7890-abcd-ef1234567890\u0027)"},{"line_number":141,"context_line":"    @utils.services(\u0027compute\u0027, \u0027image\u0027)"},{"line_number":142,"context_line":"    def test_instance_snapshot_image_hash_verification(self):"},{"line_number":143,"context_line":"        \"\"\"Test location and hash for instance snapshot image."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        This test verifies that when Nova creates a snapshot of an"}],"source_content_type":"text/x-python","patch_set":32,"id":"064d57f4_4bf77045","line":142,"range":{"start_line":142,"start_character":0,"end_line":142,"end_character":61},"updated":"2026-04-29 00:15:07.000000000","message":"I am seeing this test is failing in \n\nhttps://zuul.opendev.org/t/openstack/build/067d5a0d595042d3b6f4314333e2f5da/log/job-output.txt#23681\n\n2026-04-06 12:02:44.445991 | controller | {0} tempest.scenario.test_snapshots_with_add_location.TestImageHashVerification.test_instance_snapshot_image_hash_verification [31.442758s] ... FAILED\n2026-04-06 12:02:44.539868 | controller | Early failure in job, matched regex \"\\{\\d+\\} (.*?) \\[[\\d\\.]+s\\] \\.\\.\\. FAILED\"\nfailure\n2026-04-06 12:02:44.446044 | controller |\n2026-04-06 12:02:44.446059 | controller | Captured traceback:\n2026-04-06 12:02:44.446072 | controller | ~~~~~~~~~~~~~~~~~~~\n2026-04-06 12:02:44.446083 | controller |     Traceback (most recent call last):\n2026-04-06 12:02:44.446095 | controller |\n2026-04-06 12:02:44.446107 | controller |       File \"/opt/stack/tempest/tempest/common/utils/__init__.py\", line 65, in wrapper\n2026-04-06 12:02:44.446118 | controller |     return f(*func_args, **func_kwargs)\n2026-04-06 12:02:44.446130 | controller |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-04-06 12:02:44.446141 | controller |\n2026-04-06 12:02:44.446153 | controller |       File \"/opt/stack/tempest/tempest/scenario/test_snapshots_with_add_location.py\", line 175, in test_instance_snapshot_image_hash_verification\n2026-04-06 12:02:44.446165 | controller |     self._verify_image_location_and_hash(\n2026-04-06 12:02:44.446177 | controller |\n2026-04-06 12:02:44.446225 | controller |       File \"/opt/stack/tempest/tempest/scenario/test_snapshots_with_add_location.py\", line 125, in _verify_image_location_and_hash\n2026-04-06 12:02:44.446238 | controller |     self.assertIsNone(\n2026-04-06 12:02:44.446249 | controller |\n2026-04-06 12:02:44.446261 | controller |       File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/testtools/testcase.py\", line 459, in assertIsNone\n2026-04-06 12:02:44.446272 | controller |     self.assertThat(observed, matcher, message)\n2026-04-06 12:02:44.446284 | controller |\n2026-04-06 12:02:44.446295 | controller |       File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/testtools/testcase.py\", line 611, in assertThat\n2026-04-06 12:02:44.446307 | controller |     raise mismatch_error\n2026-04-06 12:02:44.446318 | controller |\n2026-04-06 12:02:44.446329 | controller |     testtools.matchers._impl.MismatchError: \u00274fa343ee581d8d2e78533191fd1ac3e1\u0027 is not None: checksum should be None for instance snapshot image when do_secure_hash is disabled\n2026-04-06 12:02:44.446353 | controller |\n2026-04-06 12:02:44.446364 | controller |","commit_id":"2fba3259880fa3f4961ea85872f97e6d203503ca"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"904a538bb82951fe71adfa85dd6d885e967e7d36","unresolved":true,"context_lines":[{"line_number":161,"context_line":"        \"\"\""},{"line_number":162,"context_line":"        # Create an instance"},{"line_number":163,"context_line":"        server \u003d self.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":164,"context_line":"        LOG.info(\"Instance created: %s\", server[\u0027id\u0027])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Create a snapshot of the instance"},{"line_number":167,"context_line":"        snapshot_name \u003d data_utils.rand_name("}],"source_content_type":"text/x-python","patch_set":32,"id":"e5d6f1f5_57a2dbb3","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":54},"updated":"2026-04-29 00:15:07.000000000","message":"Tempest do log the request and response of all the APIs call so I am not sure this explicit log is adding any value but I am fine if you want to add it explicitly.","commit_id":"2fba3259880fa3f4961ea85872f97e6d203503ca"}]}
