)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0f507616b77dd32110196e2c66575bcf000dd562","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a0cea53_b06cf1e6","updated":"2023-06-23 14:36:19.000000000","message":"3 functional tests related to legacy cinder are failing (probably due to mocking)\nTempest failure are not related to this change.","commit_id":"091501d4d606f53345f03c0f760952e81be39a8a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"96ccf7ef8f55dbdad81a99b0966fbcfa9c8cb2fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cf10a27f_46a47237","updated":"2023-06-27 14:41:04.000000000","message":"One issue noted inline that would fix the failing functional tests","commit_id":"091501d4d606f53345f03c0f760952e81be39a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a0720ee4_d31f6472","updated":"2023-07-03 06:48:41.000000000","message":"Hey Cyril, thank you for review, it was very helpful and now the code is very clean and easy to understand as well. \n\nCheers!!","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec8580e3aacac627a5e950ae2e5d3ebcd38c5669","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"60015c13_fc3c603c","updated":"2023-07-03 13:50:13.000000000","message":"Looks good other than tests :)","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7fb075947e87f353f885eb3d7649cc0261ab34aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4cd656ea_f288ba83","in_reply_to":"21a3827d_43f00830","updated":"2023-07-10 14:33:28.000000000","message":"Good question.. that is available to non-admins right? I can see it both ways, that operators may want users to know, or may *not* want users to know which stores are heavily-weighted. Might be best to get some input from some operators before we decide. Or, add a policy item, default to admin-only and allow it to be made visible to regular users if people want?\n\nWhat would the users (i.e. non-admins) do with the information really?","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"89668039c6ab0b992cb52c598c4a91be4f544ffc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"df1f2651_eb3e5a02","in_reply_to":"4cd656ea_f288ba83","updated":"2023-07-10 14:44:20.000000000","message":"I think we already have policy (restricted to admin by default) for this.\nhttps://github.com/openstack/glance/blob/master/glance/policies/discovery.py#L21","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ad0194298c4db9b62846d054b66e5d5832d23c28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d5cec07e_997a3cb5","in_reply_to":"60015c13_fc3c603c","updated":"2023-07-05 08:36:18.000000000","message":"Working on it, will be up by Monday EOD!","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cecd50d87f0a6da9653e184fcfc969c9e6381ec6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"21a3827d_43f00830","in_reply_to":"d5cec07e_997a3cb5","updated":"2023-07-07 05:13:00.000000000","message":"@Dan, Should I modify \u0027/v2/info/stores/detail\u0027 API to include store weight information as well?","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"677d7591f538160dd2677bbc2983f174e9a46b9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a9803980_9bd6535c","in_reply_to":"df1f2651_eb3e5a02","updated":"2023-07-10 17:36:35.000000000","message":"Ah okay then sure, might as well add it so the operators can validate that glance is weighting correctly.","commit_id":"c5acd425f4821e605df57c32fc798d7285ba3f4c"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"90835a3dd44a2b1c85d1cb1702e8b8abc0805913","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a0364669_070d1592","updated":"2023-07-10 18:57:19.000000000","message":"Honestly, I don\u0027t really like doing \"internals testing\" like we do in test_utils.py. I\u0027d drop that in favor of what you have added to test_images.py. Testing the behaviour of a function seems more reliable to me.","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"621f3a1e1e4e8d3676b60f41b2709a9801bf1259","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"572bcd58_ddf19223","updated":"2023-07-10 05:14:29.000000000","message":"rechec unrelated failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"14495b16226e4c608794f0a2e904b4caa1cffbb2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"00cb5646_ee8493a8","updated":"2023-07-07 15:01:22.000000000","message":"recheck cinder/nova related failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b188363fd144188275ff247e49750d8da992bacc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8dd70d19_590ebd74","updated":"2023-07-11 05:19:27.000000000","message":"recheck nova ceph multistore failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6de8aa4d289828bbc45a5f8b92b04d3fecaa72a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4683d0e8_cc236be6","updated":"2023-07-10 16:42:49.000000000","message":"recheck scrubber related failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"aade8fa7b94c447d22c76bf76fe98908f4143e7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"322ec250_a67c7b87","updated":"2023-07-10 13:52:53.000000000","message":"recheck unrelated failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5af65b9e8bcffedacf2c64e9603434df3096375c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d32089d4_aeea5870","updated":"2023-07-10 09:22:16.000000000","message":"recheck unrelated failure","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"cd9c1e8068629bf127bb3cb40a32fd83a42371a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f24bc605_5816e21b","updated":"2023-07-18 13:40:36.000000000","message":"Just renewing my request for debug logs, otherwise looks good.","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f1236bd4933f55be4e015b5f02e22380f80d6a92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"da39748a_d7a49763","updated":"2023-07-17 05:08:16.000000000","message":"recheck","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0c93713bace0715ba7e6819b221faff4f4b583ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f23d3cfb_8ac3fc6d","updated":"2023-07-14 09:18:39.000000000","message":"recheck cinder related failure","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"55501c2e3b5a9144c26a177c29eb9fa32b661be0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"51765fe8_e3c5bb17","updated":"2023-07-17 14:58:16.000000000","message":"recheck unrelated failure","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1d0b4fd19395e57cdfea634348e9ad0778c8d8b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"75aed2d2_644a4b33","updated":"2023-07-25 14:03:48.000000000","message":"Better fix that :)","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be9e8b7ac07c12d7900c8f55d09311d8cb610edb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"080bbc9c_9c4bb2cd","updated":"2023-07-25 13:57:28.000000000","message":"Looks pretty good. I want to pull this down and see if I can break it by changing config. I also think the log level should be lowered and the reno tightened up a bit for clarity.","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6fb07d78c668c6ed63b399beb83d98a827dcfea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e88bc487_fc5575ef","updated":"2023-07-26 05:01:49.000000000","message":"Thank you for review!","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"82fc9d64f1cca665aa3a3b5157f9edb3b6f89bdf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4165781d_1d6b7c9c","updated":"2023-07-21 05:33:38.000000000","message":"recheck","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b4ab52795eafa71c34815d469097dbb83f7b430d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6373d6ef_96c15cf7","updated":"2023-07-19 06:15:54.000000000","message":"recheck","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a98b9cd468a1fa0b8c8323d8a6f6a4d6151ca857","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e06c8218_021f1a8e","updated":"2023-07-21 07:37:22.000000000","message":"recheck cinder failure","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"59648896f6b30a022ecb4904facf1eff7908c93b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ecf85478_74d4f460","updated":"2023-07-21 09:52:01.000000000","message":"recheck cinder time out","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"14dbe04eb0d8e3d61179add57c9635ba46574b90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"92586f0a_9dbe6544","updated":"2023-07-20 04:46:28.000000000","message":"recheck multiple tempest unrelated failures","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5616dd3f7351c2b8d22c28ccfd101fbcc5d05e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a1dbd1d6_c4878bfc","updated":"2023-07-21 13:47:04.000000000","message":"recheck oom killed mysql","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d33fdf91062c196460e5291aba750dc3765316d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"02d041b5_4c94cd94","updated":"2023-07-25 04:53:56.000000000","message":"recheck timeout and unrelated failures","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"674087d5ac98ece8c52abefb9c0f5fd362439fa7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0fcdb6c6_dc8c2dc6","updated":"2023-07-24 07:35:29.000000000","message":"recheck unrelated functional failure","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"28e2c7d4009696dcdd5c8d7e65ff7f4309705a9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6fdb8051_9f8a7a5e","updated":"2023-07-24 16:39:46.000000000","message":"recheck volume failure to delete in cleanup clearly unrelated to this I think","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2f537cc33196b78f1072e096bdf9c2765501c12a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7ba9171e_a748c7f6","updated":"2023-08-01 14:25:53.000000000","message":"Thank you for review Dan!","commit_id":"497ab01a637d234b88943a57ceb6f7913c203e23"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c360f73d498a2782b6bf558ca759e0b0e0878d85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8b059a38_18a83d22","updated":"2023-07-26 07:23:34.000000000","message":"recheck unrelated failure","commit_id":"497ab01a637d234b88943a57ceb6f7913c203e23"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ef5b88fb30c310482a73b17f1c8ad0c8c5d0c6d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"46097d4a_cf47b4ca","updated":"2023-08-04 18:01:39.000000000","message":"FWIW, the identity error in multiple tests usually means mysql OOMed and so every request to keystone after that failed (because no database).","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bd0b212b97fbe84822a42ad4d5b69109f51e2043","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"42dcc9c1_1c0dc671","updated":"2023-08-01 16:51:53.000000000","message":"FYI, the fail here wasn\u0027t the timeout (of a non-voting job) it was an OOM on mysql: https://zuul.opendev.org/t/openstack/build/f717cfcb4107444e8d5c58b6af7b2e8b/log/controller/logs/syslog.txt#5996\n\nThat might be fixed by something in the gate right now.","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fefca72e89e5b8465147c480553b57d322b809f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"70e0bc73_92e8b474","updated":"2023-08-02 13:33:08.000000000","message":"I analysed the failure on glance-multistore-cinder-import job (which is passing now)\nthe error is coming from this API call[1] from tempest\nand here is the code which failed in glance[2]\nfinally here is the error message[3]\nI\u0027m suspecting between the create_image and store_image_file API calls, there is something that is making the image available\nI checked the pre condition for store_image_file is that the image should be queued state so it seems like a race\nonce the store_image_file operation starts, something makes the image available before store_image_file completes\nAt least that\u0027s my theory of what\u0027s happening\n[1] https://github.com/openstack/tempest/blob/4025fa3c8e5ba8de3f2cb60f4a225f1bc550b5e4/tempest/api/image/v2/test_images.py#L576\n[2] https://github.com/openstack/glance/blob/master/glance/api/v2/image_data.py#L139\n[3] Aug 02 07:38:16.644696 np0034832738 devstack@g-api.service[86459]: ERROR glance.api.v2.image_data glance.common.exception.InvalidImageStatusTransition: Image status transition from active to saving is not allowed","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3f4863173d0857e8ebd2c3d27881b2d80c3b6c9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"27075489_94351560","updated":"2023-08-03 04:12:14.000000000","message":"recheck","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3e0a3874d7ca15f202cbe469d9cc65f25bd702a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"48740992_bcf938e2","updated":"2023-08-02 04:29:09.000000000","message":"recheck","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"22bcdec427dfc8cda96a011cc16d671c40a59b5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7aee8a59_db245741","updated":"2023-08-03 12:42:03.000000000","message":"recheck","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"81863e2bd81d5011d16ba5cc3d719495825b85f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"274eb5ac_f28be1f0","updated":"2023-08-06 17:08:40.000000000","message":"recheck\n\ncinder volume fails to reach in expected state","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d20e49ec63993c3a2577e3bc14481bfaa87e249e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8d537d8a_9dd3c232","updated":"2023-08-07 04:18:51.000000000","message":"recheck\n\nimage failed to reach required state","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"25d43f7cb66a6f5b785fcb018291e38ec42dcda3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c4d405d6_74cc855a","updated":"2023-08-04 17:41:59.000000000","message":"recheck\n\nmultiple tests failure with \"tempest.lib.exceptions.IdentityError: Got identity error\" in glance-multistore-cinder-import and tempest-integrated-storage-enforce-scope-new-defaults","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"cc9dd9231c3366a8a9411e3ee154d193bd0d55b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4d9cef0c_1fc6c3e0","updated":"2023-08-06 14:30:23.000000000","message":"recheck\n\nmysql OOMed","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"39f6387169708e4ddb92b09d55f38dec3cc7f86c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e5d6aedc_7b2d0467","updated":"2023-08-05 13:10:19.000000000","message":"recheck\n\nmysql OOMed","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f3d477b84e0db7565d40bca617ab17d0e83b1b33","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f0a99696_ca5f2eb5","updated":"2023-08-07 11:04:36.000000000","message":"recheck\n\nmysql OOMed\nnew test related to image create task failed again","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0d399eade686bb867632d9782e4d53d461e5d74c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"69ad0a07_5f84d430","updated":"2023-08-07 08:40:43.000000000","message":"recheck\n\nnewly added image task create test failure in glance-multistore-cinder-import and nova-ceph-multistore jobs\n\nmultiple 500 errors in tempest-integrated-storage-import","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b1674aad689892075d4cec6eb805012efb42252e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a0cc1a85_0fffe68c","updated":"2023-08-05 07:26:12.000000000","message":"recheck\n\nssh time out in glance-cinder-multistore-import job","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1f0aa63f3171e1585a6ebea5ace9f84006cf52ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"844d3c09_f58595e1","updated":"2023-08-07 06:08:28.000000000","message":"recheck\n\nssh timeout in tempest-integrated-storage-enforce-scope-new-defaults job\nnewly added image task create test failure in glance-multistore-cinder-import and nova-ceph-multistore jobs","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"260bfea72e42ef09e7e9072a6766223413c66f4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"89408877_b10662af","updated":"2023-08-05 09:19:12.000000000","message":"recheck\n\nssh timeout issue","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"63983c9d93790ff636b4cb6a661c1e5b8cec520c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1925b037_6f6d52f9","updated":"2023-08-04 05:15:02.000000000","message":"recheck\n\nssh timeout while resizing volumebacked server for tempest-integrated-storage-enforce-scope-new-defaults\n\nmultiple tests failure with \"tempest.lib.exceptions.IdentityError: Got identity error\" in glance-multistore-cinder-import","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f94d7707d0aac929365a9582809b6e0ce1fd06f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ca1a61eb_996a14be","updated":"2023-08-04 14:41:48.000000000","message":"recheck\n\ntempest-integrated-storage-import-standalone and glance-multistore-cinder-import timeouts mostly while creating network resources","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"baf8b0062d5c517f8735cb9b42fc6449b19ea8d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"77520193_6d72fa5f","updated":"2023-08-06 11:45:15.000000000","message":"recheck\n\nvolume failed to reach expected status","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ceb76caade20af0a3d0204efd0ec87bf096f054d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b62512cc_d6cc04e8","updated":"2023-08-03 15:40:21.000000000","message":"recheck cinder multistore job failure due to race condition in image create and image upload (Image status transition from saving to saving is not allowed)","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a9d0cedba7e8c922d28577b2d072e154b997764e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"75b9ef3e_e360405d","updated":"2023-08-02 08:45:48.000000000","message":"recheck cinder related failure","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0daaabeba66e27a790ca05cd6b2e1f9fb666c9cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"dc71b98f_1436c41e","updated":"2023-08-03 06:32:28.000000000","message":"recheck cinder timeouts","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d6c25ab76a58adf192f8015884a11515f94f8a47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"bc30434c_30366574","updated":"2023-08-02 06:31:43.000000000","message":"recheck error in cinder","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ca98a805946b6d7a5258b9396dbc232324cdab03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3b5acbae_3c22edda","updated":"2023-08-03 09:31:57.000000000","message":"recheck error while deleting volume in cinder job","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"49fba98e63b2ec58616614f611194ee00fa79463","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a86fb4c6_1763424c","updated":"2023-08-08 05:25:40.000000000","message":"recheck image task test is now skipped","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3eace9991efcfa64aa03f7ea90f7696cca060b61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"eb8a0f28_27b064ca","updated":"2023-08-06 08:48:51.000000000","message":"recheck multiple timeouts","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"42a87ec574f33b74eb5fd70b7591197c5b88adac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ebe9af20_96e49f01","updated":"2023-08-06 04:01:55.000000000","message":"recheck server fault","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3ddfc07574f98e301e5fed37c50b91bd9010c84d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"740429b7_ac78fbe0","updated":"2023-08-01 16:47:47.000000000","message":"recheck time out","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e9747c716be2b6f4eb9a19eedca319b49a611adf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2a701a9b_018bae87","updated":"2023-08-06 07:02:56.000000000","message":"recheck timeout","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"029d89e0a2670d38621f68ad05e88559016c4c43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7e1c5ec5_a34e4711","updated":"2023-08-02 14:38:49.000000000","message":"recheck unrelated failures","commit_id":"fd222f31283db66a640a1e0802ccc7e386f7a6a4"}],"glance/common/utils.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"96ccf7ef8f55dbdad81a99b0966fbcfa9c8cb2fd","unresolved":true,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def get_image_locations(locations, multistore_enabled, choose_location\u003dFalse):"},{"line_number":719,"context_line":"    if not multistore_enabled:"},{"line_number":720,"context_line":"        return location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"    else:"},{"line_number":722,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":723,"context_line":"        # location strategy????"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd162645_2c09aab3","line":720,"range":{"start_line":720,"start_character":8,"end_line":720,"end_character":65},"updated":"2023-06-27 14:41:04.000000000","message":"This part of the code doesn\u0027t consider choose_location variable and always returns a list of locations which is not correct since the caller expects only 1 location when choose_location is True (same as done on L#744-745)\n\nI locally changed it and it passes the functional tests now\n\n    new_location_order \u003d location_strategy.get_ordered_locations(locations)\n    if choose_location:\n        return new_location_order[0]\n    return new_location_order","commit_id":"091501d4d606f53345f03c0f760952e81be39a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def get_image_locations(locations, multistore_enabled, choose_location\u003dFalse):"},{"line_number":719,"context_line":"    if not multistore_enabled:"},{"line_number":720,"context_line":"        return location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"    else:"},{"line_number":722,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":723,"context_line":"        # location strategy????"}],"source_content_type":"text/x-python","patch_set":1,"id":"6126ea3c_7a6b8c45","line":720,"range":{"start_line":720,"start_character":8,"end_line":720,"end_character":65},"in_reply_to":"677e6121_e8f00540","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"091501d4d606f53345f03c0f760952e81be39a8a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c53484248703cce4d437fc7217521b32b2abdfd","unresolved":true,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def get_image_locations(locations, multistore_enabled, choose_location\u003dFalse):"},{"line_number":719,"context_line":"    if not multistore_enabled:"},{"line_number":720,"context_line":"        return location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"    else:"},{"line_number":722,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":723,"context_line":"        # location strategy????"}],"source_content_type":"text/x-python","patch_set":1,"id":"677e6121_e8f00540","line":720,"range":{"start_line":720,"start_character":8,"end_line":720,"end_character":65},"in_reply_to":"cd162645_2c09aab3","updated":"2023-06-28 06:27:35.000000000","message":"Thank you, it worked!!","commit_id":"091501d4d606f53345f03c0f760952e81be39a8a"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":715,"context_line":"    return stores"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def get_image_locations(locations, multistore_enabled, choose_location\u003dFalse):"},{"line_number":719,"context_line":"    if not multistore_enabled:"},{"line_number":720,"context_line":"        new_location_order \u003d location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"        if choose_location:"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfff1208_b468744e","line":718,"range":{"start_line":718,"start_character":4,"end_line":718,"end_character":23},"updated":"2023-06-29 00:38:41.000000000","message":"I don\u0027t really like the name of this function. As we can see in glance/api/v2/images.py, we call _get_image_locations and then get_image_locations, and that is confusing. What this function truly does is **sort** the locations, so we should probably call it \"sort_image_locations\".\n\nI\u0027m not a big fan the multistore_enabled parameter. Sure, having pure functions means they are easier to test, but why should the caller have to pass that info? Let\u0027s just use our global CONF variable inside the function and remove the parameter. Also, once single store has been fully deprecated and removed, we can just get rid of the single-store code.\n\nThe choose_location parameter is also quite confusing. This means this function will sometimes return a list, sometimes a location, and it\u0027s hell to think about functions like this. Let\u0027s always return a list, and let the caller select the first item if they wish so.\n\nBasically, let\u0027s go with:\n\n    def sort_image_locations(locations):\n        ...","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":715,"context_line":"    return stores"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":""},{"line_number":718,"context_line":"def get_image_locations(locations, multistore_enabled, choose_location\u003dFalse):"},{"line_number":719,"context_line":"    if not multistore_enabled:"},{"line_number":720,"context_line":"        new_location_order \u003d location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"        if choose_location:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5f92c84_8559ab7d","line":718,"range":{"start_line":718,"start_character":4,"end_line":718,"end_character":23},"in_reply_to":"dfff1208_b468744e","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":720,"context_line":"        new_location_order \u003d location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"        if choose_location:"},{"line_number":722,"context_line":"            return new_location_order[0]"},{"line_number":723,"context_line":"        return new_location_order"},{"line_number":724,"context_line":"    else:"},{"line_number":725,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":726,"context_line":"        # location strategy????"}],"source_content_type":"text/x-python","patch_set":2,"id":"22297a7e_34b0081d","line":723,"range":{"start_line":723,"start_character":15,"end_line":723,"end_character":33},"updated":"2023-06-29 00:38:41.000000000","message":"So yes, this becomes:\n\n    if not CONF.enabled_backends:\n        return location_strategy.get_ordered_locations(locations)","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":720,"context_line":"        new_location_order \u003d location_strategy.get_ordered_locations(locations)"},{"line_number":721,"context_line":"        if choose_location:"},{"line_number":722,"context_line":"            return new_location_order[0]"},{"line_number":723,"context_line":"        return new_location_order"},{"line_number":724,"context_line":"    else:"},{"line_number":725,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":726,"context_line":"        # location strategy????"}],"source_content_type":"text/x-python","patch_set":2,"id":"502fe715_055d19ed","line":723,"range":{"start_line":723,"start_character":15,"end_line":723,"end_character":33},"in_reply_to":"22297a7e_34b0081d","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":721,"context_line":"        if choose_location:"},{"line_number":722,"context_line":"            return new_location_order[0]"},{"line_number":723,"context_line":"        return new_location_order"},{"line_number":724,"context_line":"    else:"},{"line_number":725,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":726,"context_line":"        # location strategy????"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dd6bc515_6d095412","line":724,"range":{"start_line":724,"start_character":4,"end_line":724,"end_character":8},"updated":"2023-06-29 00:38:41.000000000","message":"Let\u0027s remove the else, leave a blank line and move the rest of the function 4 spaces to the left. As Linus once explained, we do not want to have too many levels of indentation :)","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":721,"context_line":"        if choose_location:"},{"line_number":722,"context_line":"            return new_location_order[0]"},{"line_number":723,"context_line":"        return new_location_order"},{"line_number":724,"context_line":"    else:"},{"line_number":725,"context_line":"        # Note (abhishekk): If all stores has default weight then use"},{"line_number":726,"context_line":"        # location strategy????"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"76325c2e_bd9c7194","line":724,"range":{"start_line":724,"start_character":4,"end_line":724,"end_character":8},"in_reply_to":"dd6bc515_6d095412","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":735,"context_line":"                    location[\u0027metadata\u0027].get(\u0027store\u0027))"},{"line_number":736,"context_line":"                available_locations[store] \u003d location"},{"line_number":737,"context_line":"            else:"},{"line_number":738,"context_line":"                locations_without_store.append(location)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        new_location_order \u003d []"},{"line_number":741,"context_line":"        for location in sorted(available_locations.items(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"540dc049_843fb42c","line":738,"range":{"start_line":738,"start_character":0,"end_line":738,"end_character":16},"updated":"2023-06-29 00:38:41.000000000","message":"So we start by splitting **locations** into **available_locations** (a dict[Store,location]) and **locations_without_store** (a list)...","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":735,"context_line":"                    location[\u0027metadata\u0027].get(\u0027store\u0027))"},{"line_number":736,"context_line":"                available_locations[store] \u003d location"},{"line_number":737,"context_line":"            else:"},{"line_number":738,"context_line":"                locations_without_store.append(location)"},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"        new_location_order \u003d []"},{"line_number":741,"context_line":"        for location in sorted(available_locations.items(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1d33ec50_25bc8d45","line":738,"range":{"start_line":738,"start_character":0,"end_line":738,"end_character":16},"in_reply_to":"540dc049_843fb42c","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":740,"context_line":"        new_location_order \u003d []"},{"line_number":741,"context_line":"        for location in sorted(available_locations.items(),"},{"line_number":742,"context_line":"                               key\u003dlambda x: x[0].weight, reverse\u003dTrue):"},{"line_number":743,"context_line":"            new_location_order.append(location[1])"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        # append locations which don\u0027t have stores to the end"},{"line_number":746,"context_line":"        new_location_order +\u003d locations_without_store"}],"source_content_type":"text/x-python","patch_set":2,"id":"edc7c074_26dd369a","line":743,"range":{"start_line":743,"start_character":12,"end_line":743,"end_character":37},"updated":"2023-06-29 00:38:41.000000000","message":"... then we create a new list by sorting the values from our dictionary...","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        new_location_order \u003d []"},{"line_number":741,"context_line":"        for location in sorted(available_locations.items(),"},{"line_number":742,"context_line":"                               key\u003dlambda x: x[0].weight, reverse\u003dTrue):"},{"line_number":743,"context_line":"            new_location_order.append(location[1])"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        # append locations which don\u0027t have stores to the end"},{"line_number":746,"context_line":"        new_location_order +\u003d locations_without_store"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9969731_3ebc7130","line":743,"range":{"start_line":743,"start_character":12,"end_line":743,"end_character":37},"in_reply_to":"edc7c074_26dd369a","updated":"2023-07-03 06:48:41.000000000","message":"Ack","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1b708704d97f3ac21fb3c519b6d7599c26626d1b","unresolved":true,"context_lines":[{"line_number":743,"context_line":"            new_location_order.append(location[1])"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        # append locations which don\u0027t have stores to the end"},{"line_number":746,"context_line":"        new_location_order +\u003d locations_without_store"},{"line_number":747,"context_line":"        if choose_location:"},{"line_number":748,"context_line":"            return new_location_order[0]"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df5b8833_3ab3963a","line":746,"range":{"start_line":746,"start_character":30,"end_line":746,"end_character":53},"updated":"2023-06-29 00:38:41.000000000","message":"... and finally we extend it with orphan locations.\n\nI think we could do the same by:\n- considering locations withtout a store as having a \"0-weight\" store;\n- using sorted() directly with a helper function as the key:\n\n\n    def get_store_weight(location):\n        store_id \u003d location[\u0027metadata\u0027].get(\u0027store)\n        store \u003d glance_store.get_store_from_identifier(store_id)\n        return store.weight if store is not None else 0\n    \n    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c84396b03f8e4c87d602213d670713f5229f7a85","unresolved":false,"context_lines":[{"line_number":743,"context_line":"            new_location_order.append(location[1])"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        # append locations which don\u0027t have stores to the end"},{"line_number":746,"context_line":"        new_location_order +\u003d locations_without_store"},{"line_number":747,"context_line":"        if choose_location:"},{"line_number":748,"context_line":"            return new_location_order[0]"},{"line_number":749,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e0387be3_019131bd","line":746,"range":{"start_line":746,"start_character":30,"end_line":746,"end_character":53},"in_reply_to":"df5b8833_3ab3963a","updated":"2023-07-03 06:48:41.000000000","message":"Good suggestion, just added one line in function to return 0 if store_id is None at 2nd line in inner function otherwise it will fail with KeyError None in \"get_store_from_identifier\" function.","commit_id":"77caf57c89beb17cf3b6c649857a76cd7cfa06b7"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"90835a3dd44a2b1c85d1cb1702e8b8abc0805913","unresolved":true,"context_lines":[{"line_number":723,"context_line":"        store_id \u003d location[\u0027metadata\u0027].get(\u0027store\u0027)"},{"line_number":724,"context_line":"        if not store_id:"},{"line_number":725,"context_line":"            return 0"},{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"345e7454_7ea68950","line":726,"range":{"start_line":726,"start_character":69,"end_line":726,"end_character":70},"updated":"2023-07-10 18:57:19.000000000","message":"So, could this raise an UnknownScheme exception if we stored a location and then messed with the configuration? Shouldn\u0027t we handle this?","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"79fbe8288d95ef51d46d6ebed1f6914a74264581","unresolved":true,"context_lines":[{"line_number":723,"context_line":"        store_id \u003d location[\u0027metadata\u0027].get(\u0027store\u0027)"},{"line_number":724,"context_line":"        if not store_id:"},{"line_number":725,"context_line":"            return 0"},{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1f20db_1133f1fc","line":726,"range":{"start_line":726,"start_character":69,"end_line":726,"end_character":70},"in_reply_to":"345e7454_7ea68950","updated":"2023-07-14 04:21:22.000000000","message":"Don\u0027t think so, after configuration changes service start and first get call to image will update the location information for image locations.","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1d0b4fd19395e57cdfea634348e9ad0778c8d8b2","unresolved":true,"context_lines":[{"line_number":723,"context_line":"        store_id \u003d location[\u0027metadata\u0027].get(\u0027store\u0027)"},{"line_number":724,"context_line":"        if not store_id:"},{"line_number":725,"context_line":"            return 0"},{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d2a96e98_cb3f5433","line":726,"range":{"start_line":726,"start_character":69,"end_line":726,"end_character":70},"in_reply_to":"c28a7b2e_a4ae3033","updated":"2023-07-25 14:03:48.000000000","message":"Yeah, Cyril is right:\n```\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi [None req-2f356e15-fe94-42ba-879e-c630986bb12f demo demo] Caught error: Store for identifier cheap not found: glance_store.exceptions.UnknownScheme: Store for identifier cheap not found\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi Traceback (most recent call last):\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/usr/local/lib/python3.10/dist-packages/glance_store/multi_backend.py\", line 345, in get_store_from_store_identifier\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     scheme \u003d enabled_backends[store_identifier]\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi KeyError: \u0027cheap\u0027\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi During handling of the above exception, another exception occurred:\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi Traceback (most recent call last):\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/common/wsgi.py\", line 1295, in __call__\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     action_result \u003d self.dispatch(self.controller, action,\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/common/wsgi.py\", line 1338, in dispatch\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     return method(*args, **kwargs)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/api/v2/images.py\", line 583, in show\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     image \u003d image_repo.get(image_id)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/domain/proxy.py\", line 86, in get\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     return self.helper.proxy(self.base.get(item_id))\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/domain/proxy.py\", line 86, in get\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     return self.helper.proxy(self.base.get(item_id))\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/location.py\", line 87, in get\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     image \u003d super(ImageRepoProxy, self).get(image_id)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/domain/proxy.py\", line 86, in get\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     return self.helper.proxy(self.base.get(item_id))\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/db/__init__.py\", line 78, in get\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     image \u003d self._format_image_from_db(db_api_image, tags)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/db/__init__.py\", line 130, in _format_image_from_db\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     locations\u003dcommon_utils.sort_image_locations(locations),\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/common/utils.py\", line 729, in sort_image_locations\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     sorted_locations \u003d sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/opt/stack/glance/glance/common/utils.py\", line 726, in get_store_weight\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     store \u003d glance_store.get_store_from_store_identifier(store_id)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi   File \"/usr/local/lib/python3.10/dist-packages/glance_store/multi_backend.py\", line 348, in get_store_from_store_identifier\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi     raise exceptions.UnknownScheme(msg)\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi glance_store.exceptions.UnknownScheme: Store for identifier cheap not found\nJul 25 14:02:57 jammy devstack@g-api.service[165400]: ERROR glance.common.wsgi\n```","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6fb07d78c668c6ed63b399beb83d98a827dcfea","unresolved":false,"context_lines":[{"line_number":723,"context_line":"        store_id \u003d location[\u0027metadata\u0027].get(\u0027store\u0027)"},{"line_number":724,"context_line":"        if not store_id:"},{"line_number":725,"context_line":"            return 0"},{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"66e358f0_676ede01","line":726,"range":{"start_line":726,"start_character":69,"end_line":726,"end_character":70},"in_reply_to":"d2a96e98_cb3f5433","updated":"2023-07-26 05:01:49.000000000","message":"Done","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be9e8b7ac07c12d7900c8f55d09311d8cb610edb","unresolved":true,"context_lines":[{"line_number":723,"context_line":"        store_id \u003d location[\u0027metadata\u0027].get(\u0027store\u0027)"},{"line_number":724,"context_line":"        if not store_id:"},{"line_number":725,"context_line":"            return 0"},{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c28a7b2e_a4ae3033","line":726,"range":{"start_line":726,"start_character":69,"end_line":726,"end_character":70},"in_reply_to":"fa1f20db_1133f1fc","updated":"2023-07-25 13:57:28.000000000","message":"Is there a potential race then? I assume this just fails in some way that we return to the user until it gets updated? Looks like we\u0027ll get a UnknownScheme if that happened. Seems like we could paper over that by returning zero for weight if we\u0027re unable to do this and log a warning.","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"90835a3dd44a2b1c85d1cb1702e8b8abc0805913","unresolved":true,"context_lines":[{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d0c7a9c_3aae7e67","line":729,"range":{"start_line":729,"start_character":11,"end_line":729,"end_character":17},"updated":"2023-07-10 18:57:19.000000000","message":"I\u0027m pretty sure users will complain about this feature and report bugs, so it might be nice to have a log with the sorted list before returning, so we can debug easily.","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"79fbe8288d95ef51d46d6ebed1f6914a74264581","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"daa0f222_5614a840","line":729,"range":{"start_line":729,"start_character":11,"end_line":729,"end_character":17},"in_reply_to":"0d0c7a9c_3aae7e67","updated":"2023-07-14 04:21:22.000000000","message":"Ack","commit_id":"1367775bcac0484531d48ed7183bd32c3fcf0b91"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"cd9c1e8068629bf127bb3cb40a32fd83a42371a8","unresolved":true,"context_lines":[{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2b495723_37d6da64","line":729,"range":{"start_line":729,"start_character":11,"end_line":729,"end_character":17},"updated":"2023-07-18 13:40:36.000000000","message":"So, can we have:\n\n    sorted_locations \u003d sorted(...)\n    LOG.info(\u0027Sorted locations: ...\u0027)\n    return sorted_locations\n    \n?","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6fb07d78c668c6ed63b399beb83d98a827dcfea","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    return sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a3ff1dfb_5b14d51d","line":729,"range":{"start_line":729,"start_character":11,"end_line":729,"end_character":17},"in_reply_to":"2b495723_37d6da64","updated":"2023-07-26 05:01:49.000000000","message":"Done","commit_id":"4670418b51129653f33f1fe46f926e106bcfca67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be9e8b7ac07c12d7900c8f55d09311d8cb610edb","unresolved":true,"context_lines":[{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    sorted_locations \u003d sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"},{"line_number":730,"context_line":"    LOG.info(_LI(\u0027Sorted locations: %s\u0027), sorted_locations)"},{"line_number":731,"context_line":"    return sorted_locations"}],"source_content_type":"text/x-python","patch_set":6,"id":"8e39c7b3_a063de74","line":730,"updated":"2023-07-25 13:57:28.000000000","message":"This would be logged on each request that ends up calculating weight, right? So any image detail request? That seems like too often to log something at info level, no?","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6fb07d78c668c6ed63b399beb83d98a827dcfea","unresolved":false,"context_lines":[{"line_number":727,"context_line":"        return store.weight if store is not None else 0"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    sorted_locations \u003d sorted(locations, key\u003dget_store_weight, reverse\u003dTrue)"},{"line_number":730,"context_line":"    LOG.info(_LI(\u0027Sorted locations: %s\u0027), sorted_locations)"},{"line_number":731,"context_line":"    return sorted_locations"}],"source_content_type":"text/x-python","patch_set":6,"id":"87d6d1ed_f10f7863","line":730,"in_reply_to":"8e39c7b3_a063de74","updated":"2023-07-26 05:01:49.000000000","message":"Done","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d2e9fcb49f846f4a485e82cadf08c58f4ce246b1","unresolved":true,"context_lines":[{"line_number":726,"context_line":"        try:"},{"line_number":727,"context_line":"            store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":728,"context_line":"        except glance_store.exceptions.UnknownScheme:"},{"line_number":729,"context_line":"            msg \u003d _LW(\"Unable to find store, returning default weight \u00270\u0027\")"},{"line_number":730,"context_line":"            LOG.warning(msg)"},{"line_number":731,"context_line":"            return 0"},{"line_number":732,"context_line":"        return store.weight if store is not None else 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f039825_a371bb1f","line":729,"range":{"start_line":729,"start_character":38,"end_line":729,"end_character":43},"updated":"2023-08-01 14:14:50.000000000","message":"Probably need to say which one, right? Otherwise the operator just gets spammed with the same message but no indication which one is missing :)","commit_id":"497ab01a637d234b88943a57ceb6f7913c203e23"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2f537cc33196b78f1072e096bdf9c2765501c12a","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        try:"},{"line_number":727,"context_line":"            store \u003d glance_store.get_store_from_store_identifier(store_id)"},{"line_number":728,"context_line":"        except glance_store.exceptions.UnknownScheme:"},{"line_number":729,"context_line":"            msg \u003d _LW(\"Unable to find store, returning default weight \u00270\u0027\")"},{"line_number":730,"context_line":"            LOG.warning(msg)"},{"line_number":731,"context_line":"            return 0"},{"line_number":732,"context_line":"        return store.weight if store is not None else 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"35d7d96b_fd887b48","line":729,"range":{"start_line":729,"start_character":38,"end_line":729,"end_character":43},"in_reply_to":"1f039825_a371bb1f","updated":"2023-08-01 14:25:53.000000000","message":"Done","commit_id":"497ab01a637d234b88943a57ceb6f7913c203e23"}],"releasenotes/notes/store-weight-3ed3ee612579bc25.yaml":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"be9e8b7ac07c12d7900c8f55d09311d8cb610edb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    \"GET\" API will now sort image locations based on store weight configured"},{"line_number":5,"context_line":"    for each store in configuration files. Image will be downloaded from the"},{"line_number":6,"context_line":"    store having highest weight configured. For default weight scenario the"},{"line_number":7,"context_line":"    locations will remain same as per insertion order."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"e2bd3270_e4e53d6f","line":4,"updated":"2023-07-25 13:57:28.000000000","message":"Maybe this should be \"images API\" or something? There are lots of \"GET\" operations you can perform...","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b6fb07d78c668c6ed63b399beb83d98a827dcfea","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    \"GET\" API will now sort image locations based on store weight configured"},{"line_number":5,"context_line":"    for each store in configuration files. Image will be downloaded from the"},{"line_number":6,"context_line":"    store having highest weight configured. For default weight scenario the"},{"line_number":7,"context_line":"    locations will remain same as per insertion order."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"f2dbad39_1738dcf1","line":4,"in_reply_to":"e2bd3270_e4e53d6f","updated":"2023-07-26 05:01:49.000000000","message":"Done","commit_id":"444a4438f1b7007aabb40cd229452fbd49c9af7b"}]}
