)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e349712ff72bad279ccf3a86ba8d6b6f5662b8d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c1aeaa0c_7c2c2ff2","updated":"2022-06-02 14:50:28.000000000","message":"Hi Pirre,\n\nI hope you are still around and continue to work on this feature.\nPlease let me know if you have any difficulties.\n\nThank you,\n\nAbhishek","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"663e9c0c_e0352723","updated":"2022-06-08 12:59:21.000000000","message":"Thanks for having reviewed.\nI was off last week so unable to work on it.\nI followed the guide line and push some fixes.\nRegarding disk_format and container_format see my comment.","commit_id":"b5b67fb87abf74625ffd61bdebb2a8f139f12e68"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3f11070f1ddce68244c6c4547953efbc863e2870","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4d68af8d_47f530d4","updated":"2022-06-14 16:49:52.000000000","message":"I think you should add documentation changes and release note in the same patch as well!","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fe13729f_9e57d859","updated":"2022-06-15 07:36:22.000000000","message":"import order should be fine now","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4aacc25780141588cf88b4014cfbd6b73167b1c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"e170e843_4ebfacae","updated":"2022-06-21 06:18:38.000000000","message":"Looks good to me, +1 as documentation and release note is pending, I will check whether it is possible to add functional test for the same.","commit_id":"0bdd2359f1a7afb021136b6f4b543783e5a63c25"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e3be7f68881bee1e413898a341ae513c3ec37abb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"e61d1e1d_dac16b8c","updated":"2022-06-29 08:57:52.000000000","message":"This is definitely a good progress, I think with this you also need to modify the api reference guideline to mention new API input parameters we are going to add for this new import method;\n\nhttps://docs.openstack.org/api-ref/image/v2/index.html?expanded\u003dimport-an-image-detail#import-an-image\n\nAlso go through releasenotes from the repo as an example because we need a releasenote for this patch as well.\n\nThank you for all your work and patience.","commit_id":"98ff95866d25d275eeb48e25eec6b7134794254d"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6b9c9d7971b71ca542222fbed8d317267a0394e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"cefda4da_185d479a","updated":"2022-06-29 14:45:13.000000000","message":"Documentation and release note looks good now, I am sorry I haven\u0027t raised this comment earlier but I think we need to add this validation in the controller and unit tests to cover that validation.","commit_id":"abd519cb19b93f4b2df94e1385b464fb48162b1f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bb08f19f6293f5e075bcac92c6fd1d71d3f41ea6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"9d94e612_09642d5c","updated":"2022-07-05 16:53:38.000000000","message":"Almost there, need new unit tests for coverage and its good from my side.","commit_id":"a7aa94764a14c64d588f5a77b04717b6a7e20526"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"0e39ca0d06663b2a8443ba91d27b2e4b944633a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7c930ae4_5f95aa2b","updated":"2022-07-05 14:31:25.000000000","message":"Checks added in controller to ensure that parameters are present","commit_id":"a7aa94764a14c64d588f5a77b04717b6a7e20526"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"66c66055b3e96749b8a8d0698dce793b9913312a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"cb0574a1_47b396ab","updated":"2022-07-07 09:56:08.000000000","message":"So far this looks good to me, just one minor comment in test case.\n\nI will have a look whether it is possible to add functional test for the same.\n\n","commit_id":"0b2eedde449de3093a714c224fdc6511c02360f5"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"79587e7f_931c5ace","updated":"2022-07-08 12:54:47.000000000","message":"Couple of remarks inline. The metadata revert is really the only non-NIT item.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"e81b70029a0d27f35aae192adfdb2620f910c44a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"0705d55a_3fbe5a19","updated":"2022-07-13 05:16:34.000000000","message":"Dan is right, we need unit test coverage for glance_download module similar to web-download and base-download","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"df1150b0_d97fa4ed","updated":"2022-07-21 13:28:15.000000000","message":"I agree with the metadata rollback, I will add that in the next patch set soon","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d3fcadf1081e67ae9ba05b231b094303eb63a968","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"9abcd56c_81699e93","updated":"2022-07-12 20:15:47.000000000","message":"I assume we\u0027re still expecting to see a test_glance_download file added to this right?","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dd2d18ea415658433ae008a1c952526d4f2d767f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"30d09e4b_abee3e18","updated":"2022-07-14 15:21:59.000000000","message":"I pushed a DNM patch on top of this to get started on the unit tests. You should have a look at those and then squash that into this patch. I just didn\u0027t want to step on any changes to this patch you might have in progress.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"423f1b111f617adaf43e434c513bd0d7977cd2fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"8fc522fa_dc7c504b","updated":"2022-07-07 09:58:37.000000000","message":"So far this looks good to me.\n\nI will have a look whether it is possible to add functional test for the same.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"96038711d67858bf815da6760d97cf185e6fae32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"1d74dd04_b1256309","updated":"2022-07-21 14:46:29.000000000","message":"In the glance meeting we just discussed these work items:\n\n - Size checking with the local and remote glance to make sure we got it all\n - Revert metadata on fail\n - Target URL scheme checking\n - Target image UUID checking","commit_id":"7b235b152a18b1a7a733f2af7521c45d9fbb9484"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"f060e179079f5c22093d10011dcb98cae4104230","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"34420141_aa780dd1","updated":"2022-07-27 15:52:08.000000000","message":" - Size checking with the local and remote glance to make sure we got it all\n - Revert metadata on fail: Done\n - Target URL scheme checking\n - Target image UUID checking\n \n Moving on on the other topics","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"5047d3d26300b9ed6692877b0ffe2f2e2b407abf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"8e5d90e0_dc3f39a1","updated":"2022-07-27 21:49:33.000000000","message":" - Size checking with the local and remote glance to make sure we got it all\n - Revert metadata on fail: Done\n - Target URL scheme checking\n - Target image UUID checking: Done","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08f391a84a78c61f17797913131c8373a2e0bebb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"253051e0_a4f54521","updated":"2022-07-27 16:07:29.000000000","message":"Aside from the question about the copy, I think we should split the action wrapper changes to a patch in front of this, which I think we can merge ahead of time and make some incremental progress. If you agree, I can do this for you if it would help, just let me know. It\u0027ll slim down this (already large) patch a bit.\n\nOtherwise, the revert stuff looks good, thanks!","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"5047d3d26300b9ed6692877b0ffe2f2e2b407abf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"722e6360_706d3a8a","in_reply_to":"253051e0_a4f54521","updated":"2022-07-27 21:49:33.000000000","message":"Yeah totally agree with you, I will submit this code in a different patch, I just need to write the \"forward of the size attribute\" part to be sure we get the full picture before I submit it","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c151007aa81fc3f534183bb14fbee4d262f3150b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"92d7e262_ba21b91e","updated":"2022-08-05 17:24:15.000000000","message":"I ran out of time reviewing this so I will return next week, but I\u0027m committing the few comments I had so far just so they\u0027re recorded.","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"1c952b26c2e39f4bff67045949733d698c876a09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"2c318146_6eb71c0c","updated":"2022-08-04 16:56:09.000000000","message":"I will move the property part in api_image_import part in another patch soon, but everything should be covered now.","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"8ff5577680d68a61c228b9dfc654d33823665fec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"89fa4ee3_24853399","updated":"2022-08-08 07:30:24.000000000","message":"Agree with you guy\u0027s, this should be part of the documentation for glance-download and not the default values","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fcb232888e96ca681dc362579a933424c5121569","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"255c9f43_baa2c09c","updated":"2022-08-09 16:05:18.000000000","message":"Figured it out. I\u0027m guessing you\u0027ve got this entrypoint manually created locally, or something...","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e0b58b6768d689357617ef2fc3d1db4d069d2aaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"f8034b77_da18a957","updated":"2022-08-09 16:49:05.000000000","message":"I put this on top:\n\nhttps://review.opendev.org/c/openstack/glance/+/852609\n\nWhich links in some tempest tests I started for this:\n\nhttps://review.opendev.org/c/openstack/tempest/+/852608\n\nThe tests are expected to fail right now because we fail to revert the image state, as noted here.","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2432866bd22d433e7a3f246cb4b4bdb338bbb9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"a999ef8b_9de79e48","updated":"2022-08-09 15:46:37.000000000","message":"In trying to test this locally I get this traceback while trying to load the glance-download plugin:\n\nhttps://paste.opendev.org/show/bX9QV0GZl2AeYoBSdPmL/\n\nI haven\u0027t done any debug yet, but just documenting it here.","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9f82a598a8168eec4e6d4290eb03e2705aaae4f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"1d585eb5_a80ddd3a","updated":"2022-08-23 17:41:17.000000000","message":"Passes tests now:\n\nhttps://review.opendev.org/c/openstack/glance/+/853928\n\nIf the other tests are unrelated, then we should be good on this now.","commit_id":"480ea3825fde9d2a317064416a1304a1d3c0cf53"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b7342cf155fe0f271d3fdf43f584e26fe12ebecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"0fec5369_078050c3","updated":"2022-08-24 05:14:16.000000000","message":"Thank you Victor, Pierre and Dan!!\nLooks good to go!","commit_id":"480ea3825fde9d2a317064416a1304a1d3c0cf53"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"76448bea1cf3c36820ab8af59abba18ba3028c3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"119ebfa9_928b0e24","updated":"2022-08-23 17:18:00.000000000","message":"recheck unrelated cinder failure","commit_id":"480ea3825fde9d2a317064416a1304a1d3c0cf53"}],"glance/api/v2/images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bb08f19f6293f5e075bcac92c6fd1d71d3f41ea6","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            if not getattr(image, \u0027disk_format\u0027, None):"},{"line_number":349,"context_line":"                msg \u003d _(\"\u0027disk_format\u0027 needs to be set before import\")"},{"line_number":350,"context_line":"                raise exception.Conflict(msg)"},{"line_number":351,"context_line":"            if import_method \u003d\u003d \u0027glance-download\u0027:"},{"line_number":352,"context_line":"                if not getattr(body.get(\u0027method\u0027), \u0027glance_region\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":356,"context_line":"                if not getattr(body.get(\u0027method\u0027), \u0027glance_image_id\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"            # NOTE(danms): For copy-image only, we check policy to decide"},{"line_number":362,"context_line":"            # if the user should be able to do this. Otherwise, we forbid"}],"source_content_type":"text/x-python","patch_set":20,"id":"e38ef765_f294ee24","line":359,"range":{"start_line":351,"start_character":12,"end_line":359,"end_character":49},"updated":"2022-07-05 16:53:38.000000000","message":"Need to have unit test to validate this;\n\nsimilar to;\nhttps://github.com/openstack/glance/blob/master/glance/tests/unit/v2/test_images_resource.py#L4845","commit_id":"a7aa94764a14c64d588f5a77b04717b6a7e20526"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"8a18ab245963b0ffac1c73469174f2659f7ce85b","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            if not getattr(image, \u0027disk_format\u0027, None):"},{"line_number":349,"context_line":"                msg \u003d _(\"\u0027disk_format\u0027 needs to be set before import\")"},{"line_number":350,"context_line":"                raise exception.Conflict(msg)"},{"line_number":351,"context_line":"            if import_method \u003d\u003d \u0027glance-download\u0027:"},{"line_number":352,"context_line":"                if not getattr(body.get(\u0027method\u0027), \u0027glance_region\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":356,"context_line":"                if not getattr(body.get(\u0027method\u0027), \u0027glance_image_id\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"            # NOTE(danms): For copy-image only, we check policy to decide"},{"line_number":362,"context_line":"            # if the user should be able to do this. Otherwise, we forbid"}],"source_content_type":"text/x-python","patch_set":20,"id":"0ed1d86f_08690c56","line":359,"range":{"start_line":351,"start_character":12,"end_line":359,"end_character":49},"in_reply_to":"e38ef765_f294ee24","updated":"2022-07-07 10:01:58.000000000","message":"Ack","commit_id":"a7aa94764a14c64d588f5a77b04717b6a7e20526"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"91590e6bcd174733e6dbc37d46fa2f557c08677f","unresolved":true,"context_lines":[{"line_number":352,"context_line":"                if \u0027glance_region\u0027 not in body.get(\u0027method\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"0a415256_54644b92","line":355,"range":{"start_line":355,"start_character":26,"end_line":355,"end_character":49},"updated":"2022-07-07 08:31:09.000000000","message":"IMO this should be BadRequest, but lets see what others has to say here.","commit_id":"21af9fbccd3f0e1b9fa29b2e2806b32bed0e10cc"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"3bb16b6526518d1ca3e0e4f46b6b5e6c16fabb33","unresolved":true,"context_lines":[{"line_number":352,"context_line":"                if \u0027glance_region\u0027 not in body.get(\u0027method\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"e98c0474_602c0061","line":355,"range":{"start_line":355,"start_character":26,"end_line":355,"end_character":49},"in_reply_to":"0a415256_54644b92","updated":"2022-07-07 09:19:01.000000000","message":"It makes sense, I was not sure also, I will provide a new patch","commit_id":"21af9fbccd3f0e1b9fa29b2e2806b32bed0e10cc"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"8a18ab245963b0ffac1c73469174f2659f7ce85b","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                if \u0027glance_region\u0027 not in body.get(\u0027method\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise exception.Conflict(msg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"37ffe799_8aa51b89","line":355,"range":{"start_line":355,"start_character":26,"end_line":355,"end_character":49},"in_reply_to":"e98c0474_602c0061","updated":"2022-07-07 10:01:58.000000000","message":"Ack","commit_id":"21af9fbccd3f0e1b9fa29b2e2806b32bed0e10cc"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":332,"context_line":"                msg \u003d _(\"Only images with status active can be targeted for \""},{"line_number":333,"context_line":"                        \"copying\")"},{"line_number":334,"context_line":"                raise exception.Conflict(msg)"},{"line_number":335,"context_line":"            if image.status !\u003d \u0027queued\u0027 and \\"},{"line_number":336,"context_line":"                    import_method in [\u0027web-download\u0027, \u0027glance-download\u0027]:"},{"line_number":337,"context_line":"                msg \u003d _(\"Image needs to be in \u0027queued\u0027 state to use \""},{"line_number":338,"context_line":"                        \"\u0027%s\u0027 method\") % import_method"}],"source_content_type":"text/x-python","patch_set":23,"id":"40c918d5_9808f74d","line":335,"range":{"start_line":335,"start_character":44,"end_line":335,"end_character":45},"updated":"2022-07-08 12:54:47.000000000","message":"NIT: for consistency in style parentheses are preferred rather than splitting lines with \u0027\\\u0027","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                msg \u003d _(\"Only images with status active can be targeted for \""},{"line_number":333,"context_line":"                        \"copying\")"},{"line_number":334,"context_line":"                raise exception.Conflict(msg)"},{"line_number":335,"context_line":"            if image.status !\u003d \u0027queued\u0027 and \\"},{"line_number":336,"context_line":"                    import_method in [\u0027web-download\u0027, \u0027glance-download\u0027]:"},{"line_number":337,"context_line":"                msg \u003d _(\"Image needs to be in \u0027queued\u0027 state to use \""},{"line_number":338,"context_line":"                        \"\u0027%s\u0027 method\") % import_method"}],"source_content_type":"text/x-python","patch_set":23,"id":"1cb2240e_152d680c","line":335,"range":{"start_line":335,"start_character":44,"end_line":335,"end_character":45},"in_reply_to":"40c918d5_9808f74d","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":350,"context_line":"                raise exception.Conflict(msg)"},{"line_number":351,"context_line":"            if import_method \u003d\u003d \u0027glance-download\u0027:"},{"line_number":352,"context_line":"                if \u0027glance_region\u0027 not in body.get(\u0027method\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"4eb8af4b_4eca9a8d","line":353,"range":{"start_line":353,"start_character":65,"end_line":353,"end_character":66},"updated":"2022-07-08 12:54:47.000000000","message":"NIT: For consistency in style, we prefer not using \u0027\\\u0027. This can be simply avoided like:\nmsg \u003d _(\"\u0027glance_region\u0027 needs to be set for \"\n        \"glance-download import method\")","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                raise exception.Conflict(msg)"},{"line_number":351,"context_line":"            if import_method \u003d\u003d \u0027glance-download\u0027:"},{"line_number":352,"context_line":"                if \u0027glance_region\u0027 not in body.get(\u0027method\u0027):"},{"line_number":353,"context_line":"                    msg \u003d _(\"\u0027glance_region\u0027 needs to be set for \\"},{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"de97d741_af6bfeec","line":353,"range":{"start_line":353,"start_character":65,"end_line":353,"end_character":66},"in_reply_to":"4eb8af4b_4eca9a8d","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"10b26198_f66cd051","line":357,"range":{"start_line":357,"start_character":67,"end_line":357,"end_character":68},"updated":"2022-07-08 12:54:47.000000000","message":"Ditto","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8a597b963396e61d0d225018c26e321541193104","unresolved":true,"context_lines":[{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"0aef659d_4d152b56","line":357,"range":{"start_line":357,"start_character":30,"end_line":357,"end_character":45},"updated":"2022-07-13 15:59:27.000000000","message":"This is misspelled","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"473fd267_3c8415e7","line":357,"range":{"start_line":357,"start_character":30,"end_line":357,"end_character":45},"in_reply_to":"0aef659d_4d152b56","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                            glance-download import method\")"},{"line_number":355,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":356,"context_line":"                if \u0027glance_image_id\u0027 not in body.get(\u0027method\u0027):"},{"line_number":357,"context_line":"                    msg \u003d _(\"\u0027glance_iamge_id\u0027 needs to be set for \\"},{"line_number":358,"context_line":"                            glance-download import method\")"},{"line_number":359,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":360,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"3268c97d_aadb522f","line":357,"range":{"start_line":357,"start_character":67,"end_line":357,"end_character":68},"in_reply_to":"10b26198_f66cd051","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8a597b963396e61d0d225018c26e321541193104","unresolved":true,"context_lines":[{"line_number":445,"context_line":"            ctxt, admin_context\u003dadmin_context)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if (import_method \u003d\u003d \u0027web-download\u0027 and"},{"line_number":448,"context_line":"                not utils.validate_import_uri(uri)):"},{"line_number":449,"context_line":"            LOG.debug(\"URI for web-download does not pass filtering: %s\", uri)"},{"line_number":450,"context_line":"            msg \u003d (_(\"URI for web-download does not pass filtering: %s\") % uri)"},{"line_number":451,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5cc88859_618d2553","line":448,"updated":"2022-07-13 15:59:27.000000000","message":"I think this needs to include glance-download. If not, I might be able to construct some URI that fools urllib into reading a file:// url and discard the rest of what you\u0027re appending to it later. For example:\n\n \u003e\u003e\u003e b\u0027\u0027.join(urllib.request.urlopen(\\\n  urllib.request.Request(\\\n   \u0027file:///etc/hostname#/v2/images/12345/file\u0027)))\n b\u0027theobromine\\n\u0027","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":true,"context_lines":[{"line_number":445,"context_line":"            ctxt, admin_context\u003dadmin_context)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if (import_method \u003d\u003d \u0027web-download\u0027 and"},{"line_number":448,"context_line":"                not utils.validate_import_uri(uri)):"},{"line_number":449,"context_line":"            LOG.debug(\"URI for web-download does not pass filtering: %s\", uri)"},{"line_number":450,"context_line":"            msg \u003d (_(\"URI for web-download does not pass filtering: %s\") % uri)"},{"line_number":451,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"64598e9c_ba47033b","line":448,"in_reply_to":"5cc88859_618d2553","updated":"2022-07-21 13:28:15.000000000","message":"I am not sure we need to add glance_download here as it is a check on the uri parameters which is usable only in a web_download context, in glance_download, the uri is built from the glance_endpoint (retrieved by glance from the user token) and the image_id.\n\nOnly thing is, if a user achieve to tweak it\u0027s own token service_catalog to inject a malicious glance endpoint, but I think fernet mecanism protect us from that kind of attack.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"1c952b26c2e39f4bff67045949733d698c876a09","unresolved":false,"context_lines":[{"line_number":445,"context_line":"            ctxt, admin_context\u003dadmin_context)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if (import_method \u003d\u003d \u0027web-download\u0027 and"},{"line_number":448,"context_line":"                not utils.validate_import_uri(uri)):"},{"line_number":449,"context_line":"            LOG.debug(\"URI for web-download does not pass filtering: %s\", uri)"},{"line_number":450,"context_line":"            msg \u003d (_(\"URI for web-download does not pass filtering: %s\") % uri)"},{"line_number":451,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"c74e0724_f8921b10","line":448,"in_reply_to":"5dfb041e_cc9c63d4","updated":"2022-08-04 16:56:09.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8ca9517899382d346b8e9c63674e207b9ad4e64","unresolved":true,"context_lines":[{"line_number":445,"context_line":"            ctxt, admin_context\u003dadmin_context)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        if (import_method \u003d\u003d \u0027web-download\u0027 and"},{"line_number":448,"context_line":"                not utils.validate_import_uri(uri)):"},{"line_number":449,"context_line":"            LOG.debug(\"URI for web-download does not pass filtering: %s\", uri)"},{"line_number":450,"context_line":"            msg \u003d (_(\"URI for web-download does not pass filtering: %s\") % uri)"},{"line_number":451,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5dfb041e_cc9c63d4","line":448,"in_reply_to":"64598e9c_ba47033b","updated":"2022-07-21 14:01:23.000000000","message":"But not everyone is running fernet tokens right? Obviously you can\u0027t do the same validation here before we know the URL, but it definitely seems like it\u0027s worthwhile doing it when we have constructed the URL we\u0027re going to use. I think we also need to validate the contents of the image ID since we put that in the uri. If I can convince you to accept an image id with #, /, or ? characters, I may be able to get you to do funky stuff against the endpoint of the remote machine.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c151007aa81fc3f534183bb14fbee4d262f3150b","unresolved":true,"context_lines":[{"line_number":361,"context_line":"                try:"},{"line_number":362,"context_line":"                    uuid.UUID(body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":363,"context_line":"                except ValueError:"},{"line_number":364,"context_line":"                    msg \u003d (_(\"Remote image id does not looks like an UUID: %s\")"},{"line_number":365,"context_line":"                           % body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":366,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":367,"context_line":"                if \u0027glance_service_interface\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":27,"id":"2e5c8a3c_f6a78884","line":364,"range":{"start_line":364,"start_character":66,"end_line":364,"end_character":68},"updated":"2022-08-05 17:24:15.000000000","message":"\"a\"","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c151007aa81fc3f534183bb14fbee4d262f3150b","unresolved":true,"context_lines":[{"line_number":361,"context_line":"                try:"},{"line_number":362,"context_line":"                    uuid.UUID(body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":363,"context_line":"                except ValueError:"},{"line_number":364,"context_line":"                    msg \u003d (_(\"Remote image id does not looks like an UUID: %s\")"},{"line_number":365,"context_line":"                           % body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":366,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":367,"context_line":"                if \u0027glance_service_interface\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":27,"id":"8cbddcc6_213a6c12","line":364,"range":{"start_line":364,"start_character":55,"end_line":364,"end_character":60},"updated":"2022-08-05 17:24:15.000000000","message":"\"look\"","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"8ff5577680d68a61c228b9dfc654d33823665fec","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                try:"},{"line_number":362,"context_line":"                    uuid.UUID(body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":363,"context_line":"                except ValueError:"},{"line_number":364,"context_line":"                    msg \u003d (_(\"Remote image id does not looks like an UUID: %s\")"},{"line_number":365,"context_line":"                           % body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":366,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":367,"context_line":"                if \u0027glance_service_interface\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":27,"id":"6cc97f7d_67742a08","line":364,"range":{"start_line":364,"start_character":66,"end_line":364,"end_character":68},"in_reply_to":"2e5c8a3c_f6a78884","updated":"2022-08-08 07:30:24.000000000","message":"Done","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"8ff5577680d68a61c228b9dfc654d33823665fec","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                try:"},{"line_number":362,"context_line":"                    uuid.UUID(body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":363,"context_line":"                except ValueError:"},{"line_number":364,"context_line":"                    msg \u003d (_(\"Remote image id does not looks like an UUID: %s\")"},{"line_number":365,"context_line":"                           % body[\u0027method\u0027][\u0027glance_image_id\u0027])"},{"line_number":366,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":367,"context_line":"                if \u0027glance_service_interface\u0027 not in body.get(\u0027method\u0027):"}],"source_content_type":"text/x-python","patch_set":27,"id":"9cea6202_9051d3a8","line":364,"range":{"start_line":364,"start_character":55,"end_line":364,"end_character":60},"in_reply_to":"8cbddcc6_213a6c12","updated":"2022-08-08 07:30:24.000000000","message":"Done","commit_id":"09f9b760426d76e3528e228229be78711536fb76"}],"glance/async_/flows/_internal_plugins/__init__.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c151007aa81fc3f534183bb14fbee4d262f3150b","unresolved":true,"context_lines":[{"line_number":144,"context_line":"    cfg.ListOpt(\u0027allowed_ports\u0027,"},{"line_number":145,"context_line":"                item_type\u003dcfg.types.Integer(min\u003d1, max\u003d65535),"},{"line_number":146,"context_line":"                bounds\u003dTrue,"},{"line_number":147,"context_line":"                default\u003d[80, 443, 9292],"},{"line_number":148,"context_line":"                help\u003d_(\"\"\""},{"line_number":149,"context_line":"Specify the \"whitelist\" of allowed ports for web-download."},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"97ead95b_b11d898c","line":147,"range":{"start_line":147,"start_character":34,"end_line":147,"end_character":38},"updated":"2022-08-05 17:24:15.000000000","message":"I think maybe it\u0027s best not to add this to the default list. I guess I hope most people are not running glance naked with nothing in front of it in production, although I assume this means you do?\n\nI\u0027m curious what other people think, but I\u0027d rather leave this just 80,443 and maybe put a comment about 9292 in the help text.","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"8ff5577680d68a61c228b9dfc654d33823665fec","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    cfg.ListOpt(\u0027allowed_ports\u0027,"},{"line_number":145,"context_line":"                item_type\u003dcfg.types.Integer(min\u003d1, max\u003d65535),"},{"line_number":146,"context_line":"                bounds\u003dTrue,"},{"line_number":147,"context_line":"                default\u003d[80, 443, 9292],"},{"line_number":148,"context_line":"                help\u003d_(\"\"\""},{"line_number":149,"context_line":"Specify the \"whitelist\" of allowed ports for web-download."},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"c5f32ea3_08cf1b3c","line":147,"range":{"start_line":147,"start_character":34,"end_line":147,"end_character":38},"in_reply_to":"033eb97e_7407da94","updated":"2022-08-08 07:30:24.000000000","message":"Done","commit_id":"09f9b760426d76e3528e228229be78711536fb76"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2c535e647b48a04703fcd437a3e42736ea787907","unresolved":true,"context_lines":[{"line_number":144,"context_line":"    cfg.ListOpt(\u0027allowed_ports\u0027,"},{"line_number":145,"context_line":"                item_type\u003dcfg.types.Integer(min\u003d1, max\u003d65535),"},{"line_number":146,"context_line":"                bounds\u003dTrue,"},{"line_number":147,"context_line":"                default\u003d[80, 443, 9292],"},{"line_number":148,"context_line":"                help\u003d_(\"\"\""},{"line_number":149,"context_line":"Specify the \"whitelist\" of allowed ports for web-download."},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"033eb97e_7407da94","line":147,"range":{"start_line":147,"start_character":34,"end_line":147,"end_character":38},"in_reply_to":"97ead95b_b11d898c","updated":"2022-08-08 06:26:09.000000000","message":"+1, adding it as a comment in help makes more sense.","commit_id":"09f9b760426d76e3528e228229be78711536fb76"}],"glance/async_/flows/_internal_plugins/base_download.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":5,"id":"712df3c0_f364ae9c","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"updated":"2022-06-02 15:18:30.000000000","message":"change the copyright statement!","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":5,"id":"652609a5_520a66d0","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"in_reply_to":"712df3c0_f364ae9c","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":"import glance_store as store_api"},{"line_number":17,"context_line":"from glance_store import backend"}],"source_content_type":"text/x-python","patch_set":5,"id":"1479b173_76807b39","line":14,"updated":"2022-06-02 15:18:30.000000000","message":"nit: add a new blank line before line 15","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import abc"},{"line_number":16,"context_line":"import glance_store as store_api"},{"line_number":17,"context_line":"from glance_store import backend"}],"source_content_type":"text/x-python","patch_set":5,"id":"3114cf06_55ce1374","line":14,"in_reply_to":"1479b173_76807b39","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from glance.common import exception"},{"line_number":24,"context_line":"from glance.i18n import _, _LE"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d830a938_ebde0d19","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":10},"updated":"2022-06-02 15:18:30.000000000","message":"this is not as per import standards which openstack recommends, please refer;\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from glance.common import exception"},{"line_number":24,"context_line":"from glance.i18n import _, _LE"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b5e83dfa_d08a38ff","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":10},"in_reply_to":"d830a938_ebde0d19","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"from glance.common import exception"},{"line_number":18,"context_line":"from glance_store import backend"},{"line_number":19,"context_line":"from glance.i18n import _, _LE"},{"line_number":20,"context_line":"import glance_store as store_api"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from taskflow import task"},{"line_number":25,"context_line":"from taskflow.types import failure"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ec657a86_5318174c","line":25,"range":{"start_line":16,"start_character":0,"end_line":25,"end_character":34},"updated":"2022-06-14 16:58:59.000000000","message":"these import statements are still not as per openstack import standards;\n\nThe standard sequence of import is;\n\nstandard (inbuilt) libraries\n\u003cone blank line\u003e\nthird party libraries\n\u003cone blank line\u003e\nproject specific modules\n\n\nFor example;\nimport abc\n\nimport glance_store as store_api\nfrom oslo_config import cfg\nfrom oslo_log import log as logging\nimport six\nfrom taskflow import task\nfrom taskflow.types import failure\n\nfrom glance.common import exception\nfrom glance.i18n import _, _LE","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"from glance.common import exception"},{"line_number":18,"context_line":"from glance_store import backend"},{"line_number":19,"context_line":"from glance.i18n import _, _LE"},{"line_number":20,"context_line":"import glance_store as store_api"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from taskflow import task"},{"line_number":25,"context_line":"from taskflow.types import failure"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"6098d0be_1a9cb0df","line":25,"range":{"start_line":16,"start_character":0,"end_line":25,"end_character":34},"in_reply_to":"ec657a86_5318174c","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2022 OVHCloud"},{"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":23,"id":"84f23855_911edfe6","line":1,"updated":"2022-07-08 12:54:47.000000000","message":"I have no idea of the current standard practices on these cases, just wondering if the old copyrights apply or not as majority of the content is moved from another file rather than new 2022 work. As in, should this have the double copyright lines at the top?","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d3fcadf1081e67ae9ba05b231b094303eb63a968","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2022 OVHCloud"},{"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":23,"id":"8862fd84_5b559dfd","line":1,"in_reply_to":"84f23855_911edfe6","updated":"2022-07-12 20:15:47.000000000","message":"Yeah, if this includes copied lines from other files (other than trivial ones like import and boilerplate definition) I think it should have those copyright statements brought over.\n\nNot sure how important it really is, but probably easiest to just add them in here.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2022 OVHCloud"},{"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":23,"id":"33385fe8_30ef45cc","line":1,"in_reply_to":"8862fd84_5b559dfd","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e0b58b6768d689357617ef2fc3d1db4d069d2aaa","unresolved":true,"context_lines":[{"line_number":103,"context_line":"        return store"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def revert(self, result, **kwargs):"},{"line_number":106,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":107,"context_line":"            LOG.error(_LE(\u0027Task: %(task_id)s failed to import image \u0027"},{"line_number":108,"context_line":"                          \u0027%(image_id)s to the filesystem.\u0027),"},{"line_number":109,"context_line":"                      {\u0027task_id\u0027: self.task_id,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7871e471_d4a70b9d","line":106,"updated":"2022-08-09 16:49:05.000000000","message":"I think maybe this is preventing us from reverting the state to queued when glance-download raises a non-Failure exception?","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"76448bea1cf3c36820ab8af59abba18ba3028c3a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        return store"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def revert(self, result, **kwargs):"},{"line_number":106,"context_line":"        if isinstance(result, failure.Failure):"},{"line_number":107,"context_line":"            LOG.error(_LE(\u0027Task: %(task_id)s failed to import image \u0027"},{"line_number":108,"context_line":"                          \u0027%(image_id)s to the filesystem.\u0027),"},{"line_number":109,"context_line":"                      {\u0027task_id\u0027: self.task_id,"}],"source_content_type":"text/x-python","patch_set":28,"id":"61c52157_c51d380a","line":106,"in_reply_to":"7871e471_d4a70b9d","updated":"2022-08-23 17:18:00.000000000","message":"Done","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"}],"glance/async_/flows/_internal_plugins/glance_download.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":5,"id":"0fdee1d5_eae3a502","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"updated":"2022-06-02 15:18:30.000000000","message":"Change copyright statement","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":5,"id":"c6be2e32_c6cbb4e1","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"in_reply_to":"0fdee1d5_eae3a502","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.async_.utils import get_glance_endpoint"},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":5,"id":"cc73d310_bcee6e09","line":16,"range":{"start_line":16,"start_character":32,"end_line":16,"end_character":51},"updated":"2022-06-02 15:18:30.000000000","message":"Openstack does not recommend to import method from module,please refer;\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.async_.utils import get_glance_endpoint"},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":5,"id":"2366550b_e9404bec","line":16,"range":{"start_line":16,"start_character":32,"end_line":16,"end_character":51},"in_reply_to":"cc73d310_bcee6e09","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from oslo_utils import encodeutils"},{"line_number":20,"context_line":"from oslo_utils import excutils"},{"line_number":21,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":22,"context_line":"from urllib.request import Request"},{"line_number":23,"context_line":"from urllib.request import urlopen"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"00366751_d0a2058e","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":34},"updated":"2022-06-02 15:18:30.000000000","message":"ditto, kindly refer Openstack coding guidelines","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_utils import encodeutils"},{"line_number":20,"context_line":"from oslo_utils import excutils"},{"line_number":21,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":22,"context_line":"from urllib.request import Request"},{"line_number":23,"context_line":"from urllib.request import urlopen"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"d050133b_3aa32dd0","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":34},"in_reply_to":"00366751_d0a2058e","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from urllib.request import Request"},{"line_number":23,"context_line":"from urllib.request import urlopen"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"4f9220e9_62597f78","line":25,"range":{"start_line":25,"start_character":64,"end_line":25,"end_character":76},"updated":"2022-06-02 15:18:30.000000000","message":"ditto, not recommended to import class as well.","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from urllib.request import Request"},{"line_number":23,"context_line":"from urllib.request import urlopen"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"59a058f6_6f686974","line":25,"range":{"start_line":25,"start_character":64,"end_line":25,"end_character":76},"in_reply_to":"4f9220e9_62597f78","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":38,"context_line":"        self.context \u003d context"},{"line_number":39,"context_line":"        self.glance_region \u003d glance_region"},{"line_number":40,"context_line":"        self.glance_image_id \u003d glance_image_id"},{"line_number":41,"context_line":"        self.glance_service_interface \u003d glance_service_interface or \u0027public\u0027"},{"line_number":42,"context_line":"        super(_DownloadGlanceImage,"},{"line_number":43,"context_line":"              self).__init__(task_id, task_type, action_wrapper, stores,"},{"line_number":44,"context_line":"                             \u0027GlanceDownload\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d0d986fd_dfe9157f","line":41,"range":{"start_line":41,"start_character":65,"end_line":41,"end_character":76},"updated":"2022-06-02 15:18:30.000000000","message":"no need to add this as you are already doing the same at line #96 which means glance_service_interface will never be none (unless you are thinking that someone might use this class directly)","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        self.context \u003d context"},{"line_number":39,"context_line":"        self.glance_region \u003d glance_region"},{"line_number":40,"context_line":"        self.glance_image_id \u003d glance_image_id"},{"line_number":41,"context_line":"        self.glance_service_interface \u003d glance_service_interface or \u0027public\u0027"},{"line_number":42,"context_line":"        super(_DownloadGlanceImage,"},{"line_number":43,"context_line":"              self).__init__(task_id, task_type, action_wrapper, stores,"},{"line_number":44,"context_line":"                             \u0027GlanceDownload\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a8e35848_f1cc9e60","line":41,"range":{"start_line":41,"start_character":65,"end_line":41,"end_character":76},"in_reply_to":"d0d986fd_dfe9157f","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":55,"context_line":"                self.glance_service_interface)"},{"line_number":56,"context_line":"            image_download_url \u003d \u0027%s/v2/images/%s/file\u0027 % ("},{"line_number":57,"context_line":"                glance_endpoint, self.glance_image_id)"},{"line_number":58,"context_line":"            LOG.info(\"Downloading glance image %s\", image_download_url)"},{"line_number":59,"context_line":"            token \u003d self.context.auth_token"},{"line_number":60,"context_line":"            request \u003d Request(image_download_url,"},{"line_number":61,"context_line":"                              headers\u003d{\u0027X-Auth-Token\u0027: token})"}],"source_content_type":"text/x-python","patch_set":5,"id":"9def0302_3ee056ca","line":58,"range":{"start_line":58,"start_character":12,"end_line":58,"end_character":71},"updated":"2022-06-02 15:18:30.000000000","message":"I think you need to use i18n translation here (_LI(\".....\"))\n\nhttps://github.com/openstack/glance/blob/master/glance/api/v2/images.py#L266","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                self.glance_service_interface)"},{"line_number":56,"context_line":"            image_download_url \u003d \u0027%s/v2/images/%s/file\u0027 % ("},{"line_number":57,"context_line":"                glance_endpoint, self.glance_image_id)"},{"line_number":58,"context_line":"            LOG.info(\"Downloading glance image %s\", image_download_url)"},{"line_number":59,"context_line":"            token \u003d self.context.auth_token"},{"line_number":60,"context_line":"            request \u003d Request(image_download_url,"},{"line_number":61,"context_line":"                              headers\u003d{\u0027X-Auth-Token\u0027: token})"}],"source_content_type":"text/x-python","patch_set":5,"id":"4a49b8af_eaf81236","line":58,"range":{"start_line":58,"start_character":12,"end_line":58,"end_character":71},"in_reply_to":"9def0302_3ee056ca","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":68,"context_line":"                        \"task_id\": self.task_id"},{"line_number":69,"context_line":"                    })"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        path \u003d self.store.add(self.image_id, data, 0)[0]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        return path"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a095a6b_3477c3bb","line":73,"range":{"start_line":71,"start_character":8,"end_line":73,"end_character":19},"updated":"2022-06-02 15:18:30.000000000","message":"nit, you can directly use;\n\nreturn self.store.add(self.image_id, data, 0)[0]","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                        \"task_id\": self.task_id"},{"line_number":69,"context_line":"                    })"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        path \u003d self.store.add(self.image_id, data, 0)[0]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        return path"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9101d2a0_34a30aea","line":73,"range":{"start_line":71,"start_character":8,"end_line":73,"end_character":19},"in_reply_to":"7a095a6b_3477c3bb","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.async_.flows._internal_plugins import base_download"},{"line_number":17,"context_line":"from glance.async_ import utils"},{"line_number":18,"context_line":"from glance.i18n import _LI, _LE"},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import encodeutils"},{"line_number":22,"context_line":"from oslo_utils import excutils"},{"line_number":23,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":24,"context_line":"import urllib.request"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"a4b11915_d452425a","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":21},"updated":"2022-06-14 16:58:59.000000000","message":"same goes here as well","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.async_.flows._internal_plugins import base_download"},{"line_number":17,"context_line":"from glance.async_ import utils"},{"line_number":18,"context_line":"from glance.i18n import _LI, _LE"},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import encodeutils"},{"line_number":22,"context_line":"from oslo_utils import excutils"},{"line_number":23,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":24,"context_line":"import urllib.request"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"d4578c1f_546d29a3","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":21},"in_reply_to":"a4b11915_d452425a","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6b9c9d7971b71ca542222fbed8d317267a0394e3","unresolved":true,"context_lines":[{"line_number":88,"context_line":"    # glance-download parameters"},{"line_number":89,"context_line":"    import_req \u003d kwargs.get(\u0027import_req\u0027)"},{"line_number":90,"context_line":"    method \u003d import_req.get(\u0027method\u0027)"},{"line_number":91,"context_line":"    glance_region \u003d method.get(\u0027glance_region\u0027)"},{"line_number":92,"context_line":"    glance_image_id \u003d method.get(\u0027glance_image_id\u0027)"},{"line_number":93,"context_line":"    glance_service_interface \u003d method.get(\u0027glance_service_interface\u0027, \u0027public\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    return lf.Flow(task_type).add("}],"source_content_type":"text/x-python","patch_set":19,"id":"174c01fa_8287c076","line":92,"range":{"start_line":91,"start_character":4,"end_line":92,"end_character":51},"updated":"2022-06-29 14:45:13.000000000","message":"What happens if these two parameters are not present in the request body, I think we should validate it in the controller that if import method is glance-download then glance_image_id and glance_region should be specified otherwise it should raise http 400 error.","commit_id":"abd519cb19b93f4b2df94e1385b464fb48162b1f"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"0e39ca0d06663b2a8443ba91d27b2e4b944633a9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    # glance-download parameters"},{"line_number":89,"context_line":"    import_req \u003d kwargs.get(\u0027import_req\u0027)"},{"line_number":90,"context_line":"    method \u003d import_req.get(\u0027method\u0027)"},{"line_number":91,"context_line":"    glance_region \u003d method.get(\u0027glance_region\u0027)"},{"line_number":92,"context_line":"    glance_image_id \u003d method.get(\u0027glance_image_id\u0027)"},{"line_number":93,"context_line":"    glance_service_interface \u003d method.get(\u0027glance_service_interface\u0027, \u0027public\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    return lf.Flow(task_type).add("}],"source_content_type":"text/x-python","patch_set":19,"id":"a173a577_5dc1f4d4","line":92,"range":{"start_line":91,"start_character":4,"end_line":92,"end_character":51},"in_reply_to":"174c01fa_8287c076","updated":"2022-07-05 14:31:25.000000000","message":"Done","commit_id":"abd519cb19b93f4b2df94e1385b464fb48162b1f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d3fcadf1081e67ae9ba05b231b094303eb63a968","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                        \"task_id\": self.task_id"},{"line_number":68,"context_line":"                    })"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return self.store.add(self.image_id, data, 0)[0]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9289e97e_c88713fd","line":70,"updated":"2022-07-12 20:15:47.000000000","message":"Why did you not replicate the length checking here? We should be able to know even more information about the remote image if it\u0027s a glance, and be able to ensure we at least got what we think is the whole thing.\n\nWhen I brought up checking the hash of the image after we got it, Erno asserted that we can just trust the transport. If that\u0027s what we\u0027re going with, it seems like we should at least assert that we got all the data before we assume the image is fine. Right?","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d8ca9517899382d346b8e9c63674e207b9ad4e64","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                        \"task_id\": self.task_id"},{"line_number":68,"context_line":"                    })"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return self.store.add(self.image_id, data, 0)[0]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"a88dd101_361f415f","line":70,"in_reply_to":"6af06094_4397d69e","updated":"2022-07-21 14:01:23.000000000","message":"That\u0027s because we can\u0027t rely on the remote server to always provide content-length, and I don\u0027t even think remote glances will set it, which means we never get the check in that case right? But we *can* rely on knowing from glance via its API, right? We *should* check anything we can, IMHO, especially since we\u0027re not checking hashes.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                        \"task_id\": self.task_id"},{"line_number":68,"context_line":"                    })"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return self.store.add(self.image_id, data, 0)[0]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"6af06094_4397d69e","line":70,"in_reply_to":"9289e97e_c88713fd","updated":"2022-07-21 13:28:15.000000000","message":"I factorize the content-length check in base_download and add test there to avoid code duplication, tell me if you think it is not a good idea. About the behaviour of the check, I see that for web-download we don\u0027t care if we can\u0027t check the content-length, so the same behaviour is applied in glance_download context.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"1c952b26c2e39f4bff67045949733d698c876a09","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                        \"task_id\": self.task_id"},{"line_number":68,"context_line":"                    })"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return self.store.add(self.image_id, data, 0)[0]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_flow(**kwargs):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9df0eec4_ad007ee2","line":70,"in_reply_to":"a88dd101_361f415f","updated":"2022-08-04 16:56:09.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d3fcadf1081e67ae9ba05b231b094303eb63a968","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    glance_region \u003d method.get(\u0027glance_region\u0027)"},{"line_number":92,"context_line":"    glance_image_id \u003d method.get(\u0027glance_image_id\u0027)"},{"line_number":93,"context_line":"    glance_service_interface \u003d method.get(\u0027glance_service_interface\u0027, \u0027public\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    return lf.Flow(task_type).add("},{"line_number":96,"context_line":"        _DownloadGlanceImage(context, task_id, task_type, action_wrapper,"},{"line_number":97,"context_line":"                             stores, glance_region, glance_image_id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"43493fe4_2626d98b","line":94,"updated":"2022-07-12 20:15:47.000000000","message":"It would be better to put his defaulting of the service interface into the API code itself. The \"default of public, if unspecified\" is really an API contract with the user. Putting the defaulting of it there makes it clear in the future that a change would be API-visible, and thus be breaking or require signaling.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    glance_region \u003d method.get(\u0027glance_region\u0027)"},{"line_number":92,"context_line":"    glance_image_id \u003d method.get(\u0027glance_image_id\u0027)"},{"line_number":93,"context_line":"    glance_service_interface \u003d method.get(\u0027glance_service_interface\u0027, \u0027public\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    return lf.Flow(task_type).add("},{"line_number":96,"context_line":"        _DownloadGlanceImage(context, task_id, task_type, action_wrapper,"},{"line_number":97,"context_line":"                             stores, glance_region, glance_image_id,"}],"source_content_type":"text/x-python","patch_set":23,"id":"4aa12fc6_c8edd4a7","line":94,"in_reply_to":"43493fe4_2626d98b","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08f391a84a78c61f17797913131c8373a2e0bebb","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    task_id \u003d kwargs.get(\u0027task_id\u0027)"},{"line_number":86,"context_line":"    task_type \u003d kwargs.get(\u0027task_type\u0027)"},{"line_number":87,"context_line":"    action_wrapper \u003d kwargs.get(\u0027action_wrapper\u0027)"},{"line_number":88,"context_line":"    stores \u003d kwargs.get(\u0027backend\u0027, [None])"},{"line_number":89,"context_line":"    # glance-download parameters"},{"line_number":90,"context_line":"    import_req \u003d kwargs.get(\u0027import_req\u0027)"},{"line_number":91,"context_line":"    method \u003d import_req.get(\u0027method\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"de3b1e6f_33051905","line":88,"updated":"2022-07-27 16:07:29.000000000","message":"Why did this change?","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"5047d3d26300b9ed6692877b0ffe2f2e2b407abf","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    task_id \u003d kwargs.get(\u0027task_id\u0027)"},{"line_number":86,"context_line":"    task_type \u003d kwargs.get(\u0027task_type\u0027)"},{"line_number":87,"context_line":"    action_wrapper \u003d kwargs.get(\u0027action_wrapper\u0027)"},{"line_number":88,"context_line":"    stores \u003d kwargs.get(\u0027backend\u0027, [None])"},{"line_number":89,"context_line":"    # glance-download parameters"},{"line_number":90,"context_line":"    import_req \u003d kwargs.get(\u0027import_req\u0027)"},{"line_number":91,"context_line":"    method \u003d import_req.get(\u0027method\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"8dd0271f_9b318859","line":88,"in_reply_to":"de3b1e6f_33051905","updated":"2022-07-27 21:49:33.000000000","message":"It was a typo when writing the glance_download code who actually messed the revert function, the wanted key is backend and not stores, like for web_download: https://github.com/openstack/glance/blob/master/glance/async_/flows/_internal_plugins/web_download.py#L180","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e0b58b6768d689357617ef2fc3d1db4d069d2aaa","unresolved":true,"context_lines":[{"line_number":53,"context_line":"            glance_endpoint \u003d utils.get_glance_endpoint("},{"line_number":54,"context_line":"                self.context,"},{"line_number":55,"context_line":"                self.glance_region,"},{"line_number":56,"context_line":"                self.glance_service_interface)"},{"line_number":57,"context_line":"            image_download_url \u003d \u0027%s/v2/images/%s/file\u0027 % ("},{"line_number":58,"context_line":"                glance_endpoint, self.glance_image_id)"},{"line_number":59,"context_line":"            if not common_utils.validate_import_uri(image_download_url):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7fa1608c_7052ca7e","line":56,"updated":"2022-08-09 16:49:05.000000000","message":"This will raise your glance.common.exception.GlanceEndpointNotFound exception if region or interface is wrong, as expected. However, this gets logged as a traceback to the log (which it shouldn\u0027t) and it also makes us not revert the state of the image back to queued, so it stays in \"importing\" and must be deleted to recover. I suspect you should catch GlanceEndpointNotFound explicitly and generate some specific failure to avoid the traceback and make it clear what the problem is.","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"}],"glance/async_/flows/_internal_plugins/web_download.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import encodeutils"},{"line_number":18,"context_line":"from oslo_utils import excutils"},{"line_number":19,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":22,"context_line":"from glance.common.exception import ImportTaskError"},{"line_number":23,"context_line":"from glance.common.scripts import utils as script_utils"},{"line_number":24,"context_line":"from glance.i18n import _"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb4be7f_4b70ee7c","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":51},"updated":"2022-06-02 15:18:30.000000000","message":"ditto, kindly follow openstack coding guidelines","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import encodeutils"},{"line_number":18,"context_line":"from oslo_utils import excutils"},{"line_number":19,"context_line":"from taskflow.patterns import linear_flow as lf"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from glance.async_.flows._internal_plugins.base_download import BaseDownload"},{"line_number":22,"context_line":"from glance.common.exception import ImportTaskError"},{"line_number":23,"context_line":"from glance.common.scripts import utils as script_utils"},{"line_number":24,"context_line":"from glance.i18n import _"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"eb8f6529_7a7dee7f","line":22,"range":{"start_line":20,"start_character":0,"end_line":22,"end_character":51},"in_reply_to":"9fb4be7f_4b70ee7c","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from glance.async_.flows._internal_plugins import base_download"},{"line_number":18,"context_line":"from glance.common import exception as glance_exception"},{"line_number":19,"context_line":"from glance.common.scripts import utils as script_utils"},{"line_number":20,"context_line":"from glance.i18n import _"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"d1fb0345_12b2052d","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":25},"updated":"2022-06-14 16:58:59.000000000","message":"ditto;\n\nthis needs be added after line 26 with one blank line to separate other imports","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from glance.async_.flows._internal_plugins import base_download"},{"line_number":18,"context_line":"from glance.common import exception as glance_exception"},{"line_number":19,"context_line":"from glance.common.scripts import utils as script_utils"},{"line_number":20,"context_line":"from glance.i18n import _"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"ad366b23_21194d50","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":25},"in_reply_to":"d1fb0345_12b2052d","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"}],"glance/async_/flows/api_image_import.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":34,"context_line":"from glance.api import common as api_common"},{"line_number":35,"context_line":"import glance.async_.flows._internal_plugins as internal_plugins"},{"line_number":36,"context_line":"import glance.async_.flows.plugins as import_plugins"},{"line_number":37,"context_line":"from glance.async_.utils import get_glance_endpoint"},{"line_number":38,"context_line":"from glance.common import exception"},{"line_number":39,"context_line":"from glance.common.scripts.image_import import main as image_import"},{"line_number":40,"context_line":"from glance.common.scripts import utils as script_utils"}],"source_content_type":"text/x-python","patch_set":5,"id":"5b08f289_999f1860","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":51},"updated":"2022-06-02 15:18:30.000000000","message":"ditto,kindly follow openstack coding guidelines","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from glance.api import common as api_common"},{"line_number":35,"context_line":"import glance.async_.flows._internal_plugins as internal_plugins"},{"line_number":36,"context_line":"import glance.async_.flows.plugins as import_plugins"},{"line_number":37,"context_line":"from glance.async_.utils import get_glance_endpoint"},{"line_number":38,"context_line":"from glance.common import exception"},{"line_number":39,"context_line":"from glance.common.scripts.image_import import main as image_import"},{"line_number":40,"context_line":"from glance.common.scripts import utils as script_utils"}],"source_content_type":"text/x-python","patch_set":5,"id":"70fc5793_7c5665cc","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":51},"in_reply_to":"5b08f289_999f1860","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":41,"context_line":"from glance.common import store_utils"},{"line_number":42,"context_line":"from glance.i18n import _, _LE, _LI"},{"line_number":43,"context_line":"from glance.quota import keystone as ks_quota"},{"line_number":44,"context_line":"from urllib.request import Request"},{"line_number":45,"context_line":"from urllib.request import urlopen"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":5,"id":"98f100de_785467a0","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":34},"updated":"2022-06-02 15:18:30.000000000","message":"ditto","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from glance.common import store_utils"},{"line_number":42,"context_line":"from glance.i18n import _, _LE, _LI"},{"line_number":43,"context_line":"from glance.quota import keystone as ks_quota"},{"line_number":44,"context_line":"from urllib.request import Request"},{"line_number":45,"context_line":"from urllib.request import urlopen"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d4170fe2_ace4acf8","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":34},"in_reply_to":"98f100de_785467a0","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":798,"context_line":"            glance_image_id \u003d self.import_req[\u0027method\u0027][\u0027glance_image_id\u0027]"},{"line_number":799,"context_line":"            image_download_url \u003d \u0027%s/v2/images/%s\u0027 % ("},{"line_number":800,"context_line":"                glance_endpoint, glance_image_id)"},{"line_number":801,"context_line":"            LOG.info(\"Downloading glance image %s\", image_download_url)"},{"line_number":802,"context_line":"            token \u003d self.context.auth_token"},{"line_number":803,"context_line":"            request \u003d Request(image_download_url,"},{"line_number":804,"context_line":"                              headers\u003d{\u0027X-Auth-Token\u0027: token})"}],"source_content_type":"text/x-python","patch_set":5,"id":"fdcdfa16_a610ad09","line":801,"range":{"start_line":801,"start_character":41,"end_line":801,"end_character":46},"updated":"2022-06-02 15:18:30.000000000","message":"Fetching glance image metadata from remote host?","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":798,"context_line":"            glance_image_id \u003d self.import_req[\u0027method\u0027][\u0027glance_image_id\u0027]"},{"line_number":799,"context_line":"            image_download_url \u003d \u0027%s/v2/images/%s\u0027 % ("},{"line_number":800,"context_line":"                glance_endpoint, glance_image_id)"},{"line_number":801,"context_line":"            LOG.info(\"Downloading glance image %s\", image_download_url)"},{"line_number":802,"context_line":"            token \u003d self.context.auth_token"},{"line_number":803,"context_line":"            request \u003d Request(image_download_url,"},{"line_number":804,"context_line":"                              headers\u003d{\u0027X-Auth-Token\u0027: token})"}],"source_content_type":"text/x-python","patch_set":5,"id":"36e4aeff_58150d21","line":801,"range":{"start_line":801,"start_character":41,"end_line":801,"end_character":46},"in_reply_to":"fdcdfa16_a610ad09","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"def assert_quota(context, task_repo, task_id, stores,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5425aa24_4cda764f","line":842,"updated":"2022-06-02 15:18:30.000000000","message":"shouldn\u0027t we also revert the disk-format and container-format to original values?","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":true,"context_lines":[{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"def assert_quota(context, task_repo, task_id, stores,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bde9455c_b731e105","line":842,"in_reply_to":"5425aa24_4cda764f","updated":"2022-06-08 12:59:21.000000000","message":"I\u0027m not sure that\u0027s useful as the disk-format and container-format will always be updated.","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"def assert_quota(context, task_repo, task_id, stores,"}],"source_content_type":"text/x-python","patch_set":5,"id":"75cb987f_6531e0e6","line":842,"in_reply_to":"bde9455c_b731e105","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":983,"context_line":"                     ks_quota.enforce_image_size_total,"},{"line_number":984,"context_line":"                     delta\u003dimage_size)"},{"line_number":985,"context_line":"    elif import_method in (\u0027copy-image\u0027, \u0027web-download\u0027, \u0027glance-download\u0027):"},{"line_number":986,"context_line":"        # The copy-image and web-download methods will use staging space to"},{"line_number":987,"context_line":"        # do their work, so check that quota."},{"line_number":988,"context_line":"        assert_quota(kwargs[\u0027context\u0027], task_repo, task_id,"},{"line_number":989,"context_line":"                     stores, action_wrapper,"}],"source_content_type":"text/x-python","patch_set":5,"id":"29255feb_55c3fac5","line":986,"updated":"2022-06-02 15:18:30.000000000","message":"you need to add glance-download to this comment as well","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":983,"context_line":"                     ks_quota.enforce_image_size_total,"},{"line_number":984,"context_line":"                     delta\u003dimage_size)"},{"line_number":985,"context_line":"    elif import_method in (\u0027copy-image\u0027, \u0027web-download\u0027, \u0027glance-download\u0027):"},{"line_number":986,"context_line":"        # The copy-image and web-download methods will use staging space to"},{"line_number":987,"context_line":"        # do their work, so check that quota."},{"line_number":988,"context_line":"        assert_quota(kwargs[\u0027context\u0027], task_repo, task_id,"},{"line_number":989,"context_line":"                     stores, action_wrapper,"}],"source_content_type":"text/x-python","patch_set":5,"id":"b3c43c6b_2fcfeef4","line":986,"in_reply_to":"29255feb_55c3fac5","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":41,"context_line":"from glance.common import store_utils"},{"line_number":42,"context_line":"from glance.i18n import _, _LE, _LI"},{"line_number":43,"context_line":"from glance.quota import keystone as ks_quota"},{"line_number":44,"context_line":"import urllib.request"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"a01c99d8_ac15b732","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":21},"updated":"2022-06-14 16:58:59.000000000","message":"this needs be move after line #18","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from glance.common import store_utils"},{"line_number":42,"context_line":"from glance.i18n import _, _LE, _LI"},{"line_number":43,"context_line":"from glance.quota import keystone as ks_quota"},{"line_number":44,"context_line":"import urllib.request"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1781d666_6e7d64c5","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":21},"in_reply_to":"a01c99d8_ac15b732","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":779,"context_line":"        self.context \u003d context"},{"line_number":780,"context_line":"        self.action_wrapper \u003d action_wrapper"},{"line_number":781,"context_line":"        self.import_req \u003d import_req"},{"line_number":782,"context_line":"        # We store the properties that will be set in case we are reverting"},{"line_number":783,"context_line":"        self.properties \u003d {}"},{"line_number":784,"context_line":"        super(_ImportMetadata, self).__init__("},{"line_number":785,"context_line":"            name\u003d\u0027%s-ImportMetdata-%s\u0027 % (task_type, task_id))"}],"source_content_type":"text/x-python","patch_set":23,"id":"4838fcf2_1ff92e12","line":782,"updated":"2022-07-08 12:54:47.000000000","message":"I guess we should save the current image metadata somewhere.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"f060e179079f5c22093d10011dcb98cae4104230","unresolved":false,"context_lines":[{"line_number":779,"context_line":"        self.context \u003d context"},{"line_number":780,"context_line":"        self.action_wrapper \u003d action_wrapper"},{"line_number":781,"context_line":"        self.import_req \u003d import_req"},{"line_number":782,"context_line":"        # We store the properties that will be set in case we are reverting"},{"line_number":783,"context_line":"        self.properties \u003d {}"},{"line_number":784,"context_line":"        super(_ImportMetadata, self).__init__("},{"line_number":785,"context_line":"            name\u003d\u0027%s-ImportMetdata-%s\u0027 % (task_type, task_id))"}],"source_content_type":"text/x-python","patch_set":23,"id":"b881205c_a620a5f5","line":782,"in_reply_to":"4838fcf2_1ff92e12","updated":"2022-07-27 15:52:08.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d3fcadf1081e67ae9ba05b231b094303eb63a968","unresolved":true,"context_lines":[{"line_number":811,"context_line":"                    % data[\u0027status\u0027])"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            for key, value in data.items():"},{"line_number":814,"context_line":"                for metadata in \\"},{"line_number":815,"context_line":"                        CONF.glance_download_properties.extra_properties:"},{"line_number":816,"context_line":"                    if key.startswith(metadata):"},{"line_number":817,"context_line":"                        self.properties[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":23,"id":"ef31fb25_042ff6ab","line":814,"range":{"start_line":814,"start_character":32,"end_line":814,"end_character":33},"updated":"2022-07-12 20:15:47.000000000","message":"Not sure if Erno missed this one or disagrees, but I\u0027d normally expect to see this broken with parens as well. Better yet would be to just use a variable for these and avoid the need for the line break.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"10d0372bed4bae051c1eca98ac1d636b36f3370e","unresolved":false,"context_lines":[{"line_number":811,"context_line":"                    % data[\u0027status\u0027])"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"            for key, value in data.items():"},{"line_number":814,"context_line":"                for metadata in \\"},{"line_number":815,"context_line":"                        CONF.glance_download_properties.extra_properties:"},{"line_number":816,"context_line":"                    if key.startswith(metadata):"},{"line_number":817,"context_line":"                        self.properties[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":23,"id":"fd824243_6f184a43","line":814,"range":{"start_line":814,"start_character":32,"end_line":814,"end_character":33},"in_reply_to":"ef31fb25_042ff6ab","updated":"2022-07-21 13:28:15.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e9a295653dc2f71699006b803c0869645b241e9c","unresolved":true,"context_lines":[{"line_number":838,"context_line":"        \"\"\"Revert the extra properties set and set the image in queued\"\"\""},{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"88f1286b_4d266ef2","line":841,"updated":"2022-07-08 12:54:47.000000000","message":"This does not revert correctly. It removes any metadata that\u0027s been set by the module, but it does not restore those values in the case they were overwritten instead of set from non-existing.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"f060e179079f5c22093d10011dcb98cae4104230","unresolved":false,"context_lines":[{"line_number":838,"context_line":"        \"\"\"Revert the extra properties set and set the image in queued\"\"\""},{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"8d154106_e68589f9","line":841,"in_reply_to":"865678af_f8a69df3","updated":"2022-07-27 15:52:08.000000000","message":"Done","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"938c86f248e3dc955e0011cc16cc20c43a5c1a3b","unresolved":true,"context_lines":[{"line_number":838,"context_line":"        \"\"\"Revert the extra properties set and set the image in queued\"\"\""},{"line_number":839,"context_line":"        with self.action_wrapper as action:"},{"line_number":840,"context_line":"            for image_property in self.properties:"},{"line_number":841,"context_line":"                action.pop_extra_property(image_property)"},{"line_number":842,"context_line":"            action.set_image_attribute(status\u003d\u0027queued\u0027)"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"865678af_f8a69df3","line":841,"in_reply_to":"88f1286b_4d266ef2","updated":"2022-07-12 17:51:23.000000000","message":"Yeah, agree. Revert should \"put it back to the way it was.\" Deleting what we set is partially a revert, but not enough.","commit_id":"6632e62f91b91ba322f94aa0088b751b94d29a60"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c631bba8a345116629de53ec76db78fbbbadaf97","unresolved":true,"context_lines":[{"line_number":770,"context_line":"                 {\u0027task_id\u0027: self.task_id, \u0027task_type\u0027: self.task_type})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"class _ImportMetadata(task.Task):"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def __init__(self, task_id, task_type, context, action_wrapper,"},{"line_number":776,"context_line":"                 import_req):"}],"source_content_type":"text/x-python","patch_set":24,"id":"cb41a5cd_a755d4cc","line":773,"updated":"2022-07-21 14:41:06.000000000","message":"I know this is the convention but... can\u0027t we put this in glance_download.py instead? This is wholly related to that thing, and this file is already cluttered. I think that would be nicer to co-locate all the related stuff in the one file.","commit_id":"7b235b152a18b1a7a733f2af7521c45d9fbb9484"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"09e81bd9c1a6e0aa8923f54c51bee4c23821f90d","unresolved":true,"context_lines":[{"line_number":770,"context_line":"                 {\u0027task_id\u0027: self.task_id, \u0027task_type\u0027: self.task_type})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"class _ImportMetadata(task.Task):"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def __init__(self, task_id, task_type, context, action_wrapper,"},{"line_number":776,"context_line":"                 import_req):"}],"source_content_type":"text/x-python","patch_set":24,"id":"c3a1086b_241abe1f","line":773,"in_reply_to":"69b4ad75_b8ce18f1","updated":"2022-08-08 14:02:50.000000000","message":"I don\u0027t see how the method being generic has anything to do with why this needs to be here instead of in glance-download. The get_flow() method below (where this is used) already has special handling for glance-download. All it would need to do is use glance_download.ImportMetadata instead of _ImportMetadata.\n\nAnyway, it\u0027s not critical, it\u0027s just that this file ends up containing a lot of stuff that is only used for a single import method which gets confusing when you\u0027re looking for all the method-specific code, IMHO.","commit_id":"7b235b152a18b1a7a733f2af7521c45d9fbb9484"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"1887e1712b9cc32270b24052c87644d4b18db77d","unresolved":true,"context_lines":[{"line_number":770,"context_line":"                 {\u0027task_id\u0027: self.task_id, \u0027task_type\u0027: self.task_type})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"class _ImportMetadata(task.Task):"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def __init__(self, task_id, task_type, context, action_wrapper,"},{"line_number":776,"context_line":"                 import_req):"}],"source_content_type":"text/x-python","patch_set":24,"id":"f158cd88_8b7dc93c","line":773,"in_reply_to":"c3a1086b_241abe1f","updated":"2022-08-08 14:26:45.000000000","message":"It is more intuitive to load a class that imports metadata in api_image_import file instead of loading that class in _internal_plugins.glance_download (why this generic class should be loaded from a plugin?).\n\nBut I agree with you, the api_image_import files contains a lot of stuff and should be reviewed. Moving _ImportMetadata in glance_download is not the solution, may be an other file like image_import_tasks that contains all the specific tasks class will be smarter, IMHO.","commit_id":"7b235b152a18b1a7a733f2af7521c45d9fbb9484"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"78b8914204e381fc917efd064201d4da3cc0f15d","unresolved":true,"context_lines":[{"line_number":770,"context_line":"                 {\u0027task_id\u0027: self.task_id, \u0027task_type\u0027: self.task_type})"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"class _ImportMetadata(task.Task):"},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"    def __init__(self, task_id, task_type, context, action_wrapper,"},{"line_number":776,"context_line":"                 import_req):"}],"source_content_type":"text/x-python","patch_set":24,"id":"69b4ad75_b8ce18f1","line":773,"in_reply_to":"cb41a5cd_a755d4cc","updated":"2022-08-08 08:50:55.000000000","message":"I thought that the idea was to get a generic import method class that could be re-used. In that case keeping it in this file makes more sense than moving it.","commit_id":"7b235b152a18b1a7a733f2af7521c45d9fbb9484"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08f391a84a78c61f17797913131c8373a2e0bebb","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @property"},{"line_number":252,"context_line":"    def image_extra_properties(self):"},{"line_number":253,"context_line":"        return copy.deepcopy(self._image.extra_properties)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @property"},{"line_number":256,"context_line":"    def image_status(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"6a2f47c3_1cd00697","line":253,"range":{"start_line":253,"start_character":15,"end_line":253,"end_character":28},"updated":"2022-07-27 16:07:29.000000000","message":"Why does this need to be a deepcopy? I expect all the extra properties to be string keys and values. I think:\n\n return dict(self._image.extra_properties)\n\nwould be enough, no?","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"1c952b26c2e39f4bff67045949733d698c876a09","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @property"},{"line_number":252,"context_line":"    def image_extra_properties(self):"},{"line_number":253,"context_line":"        return copy.deepcopy(self._image.extra_properties)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @property"},{"line_number":256,"context_line":"    def image_status(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"0d129ca1_35111378","line":253,"range":{"start_line":253,"start_character":15,"end_line":253,"end_character":28},"in_reply_to":"067bf33d_3e5168d2","updated":"2022-08-04 16:56:09.000000000","message":"Done","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"5047d3d26300b9ed6692877b0ffe2f2e2b407abf","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @property"},{"line_number":252,"context_line":"    def image_extra_properties(self):"},{"line_number":253,"context_line":"        return copy.deepcopy(self._image.extra_properties)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @property"},{"line_number":256,"context_line":"    def image_status(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"b2784266_2b285f58","line":253,"range":{"start_line":253,"start_character":15,"end_line":253,"end_character":28},"in_reply_to":"6a2f47c3_1cd00697","updated":"2022-07-27 21:49:33.000000000","message":"Yes you\u0027re right, I base this property on the location one but a simple cast to a dict seems ok. Should I also remove the magic method in the ExtraProperties class ? It make me loose some time because current code return an empty dict when using deepcopy on ExtraProperties instance, which is counterintuitive.","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ba0e7892b00cc21f8e8c52fecb5c305e380b318","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @property"},{"line_number":252,"context_line":"    def image_extra_properties(self):"},{"line_number":253,"context_line":"        return copy.deepcopy(self._image.extra_properties)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @property"},{"line_number":256,"context_line":"    def image_status(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"067bf33d_3e5168d2","line":253,"range":{"start_line":253,"start_character":15,"end_line":253,"end_character":28},"in_reply_to":"b2784266_2b285f58","updated":"2022-07-27 22:45:20.000000000","message":"Yeah, I would remove it, since it\u0027s effectively dead code. If we needed it later, we should add it then.","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e0b58b6768d689357617ef2fc3d1db4d069d2aaa","unresolved":true,"context_lines":[{"line_number":816,"context_line":"                     image_download_metadata_url)"},{"line_number":817,"context_line":"            token \u003d self.context.auth_token"},{"line_number":818,"context_line":"            request \u003d urllib.request.Request(image_download_metadata_url,"},{"line_number":819,"context_line":"                                             headers\u003d{\u0027X-Auth-Token\u0027: token})"},{"line_number":820,"context_line":"            with urllib.request.urlopen(request) as payload:"},{"line_number":821,"context_line":"                data \u003d json.loads(payload.read().decode(\u0027utf-8\u0027))"},{"line_number":822,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"9381ee2c_49f232ab","line":819,"updated":"2022-08-09 16:49:05.000000000","message":"Same thing happens here: If this is a 404, we never property revert the image back to queued state.","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"}],"glance/async_/utils.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"db716bb594215f1fa07161d220aeb69cd029d9b1","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from oslo_utils import units"},{"line_number":20,"context_line":"from taskflow import task"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glance.common.exception import GlanceEndpointNotFound"},{"line_number":23,"context_line":"from glance.i18n import _LW"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b9076790_1414fe80","line":22,"range":{"start_line":22,"start_character":36,"end_line":22,"end_character":58},"updated":"2022-06-02 15:18:30.000000000","message":"ditto,follow openstack coding guidelines.","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"ec75278a7e2e06871fc2d777f61ef11879be631e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_utils import units"},{"line_number":20,"context_line":"from taskflow import task"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glance.common.exception import GlanceEndpointNotFound"},{"line_number":23,"context_line":"from glance.i18n import _LW"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dc7e46da_bd28de41","line":22,"range":{"start_line":22,"start_character":36,"end_line":22,"end_character":58},"in_reply_to":"b9076790_1414fe80","updated":"2022-06-08 12:59:21.000000000","message":"Done","commit_id":"e960871497ef6f4506c156f22869efd89cc73f12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.common import exception as glance_exception"},{"line_number":17,"context_line":"from glance.i18n import _LW"},{"line_number":18,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"a9ee258a_bb243b45","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":27},"updated":"2022-06-14 16:58:59.000000000","message":"ditto this needs to be moved after line no 23","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from glance.common import exception as glance_exception"},{"line_number":17,"context_line":"from glance.i18n import _LW"},{"line_number":18,"context_line":"from oslo_concurrency import processutils as putils"},{"line_number":19,"context_line":"from oslo_log import log as logging"},{"line_number":20,"context_line":"from oslo_utils import encodeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"b49c75e9_5591c646","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":27},"in_reply_to":"a9ee258a_bb243b45","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2432866bd22d433e7a3f246cb4b4bdb338bbb9","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glance.i18n import _LW"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# NOTE(hemanthm): As reported in the bug #1449062, \"qemu-img info\" calls can"}],"source_content_type":"text/x-python","patch_set":28,"id":"90e7b6cc_b8e88f3d","side":"PARENT","line":24,"updated":"2022-08-09 15:46:37.000000000","message":"This is unrelated whitespace damage, which obscures history by making it look like this patch touched this line. If you respin, it would be best to put this back the way it was. If the cleanup is legit, we should do it in a clearly-just-cleanup patch.","commit_id":"00f453372ccd4faf99e9a0bf527762a131968ad0"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"76448bea1cf3c36820ab8af59abba18ba3028c3a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from glance.i18n import _LW"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# NOTE(hemanthm): As reported in the bug #1449062, \"qemu-img info\" calls can"}],"source_content_type":"text/x-python","patch_set":28,"id":"5229e376_32ae4295","side":"PARENT","line":24,"in_reply_to":"90e7b6cc_b8e88f3d","updated":"2022-08-23 17:18:00.000000000","message":"Done","commit_id":"00f453372ccd4faf99e9a0bf527762a131968ad0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e0b58b6768d689357617ef2fc3d1db4d069d2aaa","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                    return endpoint.get(\u0027%sURL\u0027 % interface)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    raise glance_exception.GlanceEndpointNotFound(region\u003dregion,"},{"line_number":96,"context_line":"                                                  interface\u003dinterface)"}],"source_content_type":"text/x-python","patch_set":28,"id":"3138e301_315b0c8c","line":96,"updated":"2022-08-09 16:49:05.000000000","message":"I think we should put this and the test for it in a separate patch so we can get it out of this growing patch. Can\u0027t remember if I already suggested that, but if so...I still think this :)","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"76448bea1cf3c36820ab8af59abba18ba3028c3a","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                    return endpoint.get(\u0027%sURL\u0027 % interface)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    raise glance_exception.GlanceEndpointNotFound(region\u003dregion,"},{"line_number":96,"context_line":"                                                  interface\u003dinterface)"}],"source_content_type":"text/x-python","patch_set":28,"id":"aeb84290_e08d00c3","line":96,"in_reply_to":"3138e301_315b0c8c","updated":"2022-08-23 17:18:00.000000000","message":"Done","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"}],"glance/tests/unit/async_/flows/test_api_image_import.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"08f391a84a78c61f17797913131c8373a2e0bebb","unresolved":true,"context_lines":[{"line_number":894,"context_line":"        self.image.status \u003d \u0027active\u0027"},{"line_number":895,"context_line":"        self.image.disk_format \u003d \u0027raw\u0027"},{"line_number":896,"context_line":"        self.image.container_format \u003d \u0027bare\u0027"},{"line_number":897,"context_line":"        self.image.extra_properties \u003d ExtraProperties({\u0027speed\u0027: \u002788mph\u0027})"},{"line_number":898,"context_line":"        self.image.checksum \u003d mock.sentinel.checksum"},{"line_number":899,"context_line":"        self.image.os_hash_algo \u003d mock.sentinel.hash_algo"},{"line_number":900,"context_line":"        self.image.os_hash_value \u003d mock.sentinel.hash_value"}],"source_content_type":"text/x-python","patch_set":25,"id":"be3e97a4_f30861a7","line":897,"range":{"start_line":897,"start_character":54,"end_line":897,"end_character":72},"updated":"2022-07-27 16:07:29.000000000","message":"++ :)","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"5047d3d26300b9ed6692877b0ffe2f2e2b407abf","unresolved":false,"context_lines":[{"line_number":894,"context_line":"        self.image.status \u003d \u0027active\u0027"},{"line_number":895,"context_line":"        self.image.disk_format \u003d \u0027raw\u0027"},{"line_number":896,"context_line":"        self.image.container_format \u003d \u0027bare\u0027"},{"line_number":897,"context_line":"        self.image.extra_properties \u003d ExtraProperties({\u0027speed\u0027: \u002788mph\u0027})"},{"line_number":898,"context_line":"        self.image.checksum \u003d mock.sentinel.checksum"},{"line_number":899,"context_line":"        self.image.os_hash_algo \u003d mock.sentinel.hash_algo"},{"line_number":900,"context_line":"        self.image.os_hash_value \u003d mock.sentinel.hash_value"}],"source_content_type":"text/x-python","patch_set":25,"id":"e73c0e1b_7e5c1fc1","line":897,"range":{"start_line":897,"start_character":54,"end_line":897,"end_character":72},"in_reply_to":"be3e97a4_f30861a7","updated":"2022-07-27 21:49:33.000000000","message":"Ack","commit_id":"33621be6571c64704e6c833d94b342b74cbeb469"}],"glance/tests/unit/async_/flows/test_base_download.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6e0f8c14e88d854e61c8929c76cce54027283b05","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":13,"id":"8108a6dc_5734c122","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"updated":"2022-06-14 16:58:59.000000000","message":"Copyright needs to be 2022","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"c4efdb9cd554065d4fd62d2374e59e37dfdec7c9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc."},{"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":13,"id":"320551c2_d6453387","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":30},"in_reply_to":"8108a6dc_5734c122","updated":"2022-06-15 07:36:22.000000000","message":"Done","commit_id":"dd141cb9f64fde9fd77190f3469d0467686f60da"}],"glance/tests/unit/v2/test_images_resource.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"66c66055b3e96749b8a8d0698dce793b9913312a","unresolved":true,"context_lines":[{"line_number":911,"context_line":"                              {\u0027method\u0027: {\u0027name\u0027: \u0027web-download\u0027,"},{"line_number":912,"context_line":"                                          \u0027uri\u0027: \u0027fake_uri\u0027}})"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_image_import_raises_conflict_for_glance_download_missing_input("},{"line_number":915,"context_line":"            self):"},{"line_number":916,"context_line":"        request \u003d unit_test_utils.get_fake_request()"},{"line_number":917,"context_line":"        with mock.patch.object("}],"source_content_type":"text/x-python","patch_set":22,"id":"5f5632f1_09d193ea","line":914,"range":{"start_line":914,"start_character":33,"end_line":914,"end_character":41},"updated":"2022-07-07 09:56:08.000000000","message":"nit:\ntest_image_import_glance_download_missing_input","commit_id":"0b2eedde449de3093a714c224fdc6511c02360f5"},{"author":{"_account_id":29037,"name":"Pierre-Samuel Le Stang","email":"pierre-samuel.le-stang@ovhcloud.com","username":"pslestang"},"change_message_id":"8a18ab245963b0ffac1c73469174f2659f7ce85b","unresolved":false,"context_lines":[{"line_number":911,"context_line":"                              {\u0027method\u0027: {\u0027name\u0027: \u0027web-download\u0027,"},{"line_number":912,"context_line":"                                          \u0027uri\u0027: \u0027fake_uri\u0027}})"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_image_import_raises_conflict_for_glance_download_missing_input("},{"line_number":915,"context_line":"            self):"},{"line_number":916,"context_line":"        request \u003d unit_test_utils.get_fake_request()"},{"line_number":917,"context_line":"        with mock.patch.object("}],"source_content_type":"text/x-python","patch_set":22,"id":"7a7e1f78_48f35068","line":914,"range":{"start_line":914,"start_character":33,"end_line":914,"end_character":41},"in_reply_to":"5f5632f1_09d193ea","updated":"2022-07-07 10:01:58.000000000","message":"Ack","commit_id":"0b2eedde449de3093a714c224fdc6511c02360f5"}],"setup.cfg":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fcb232888e96ca681dc362579a933424c5121569","unresolved":true,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"glance.image_import.internal_plugins \u003d"},{"line_number":83,"context_line":"    web_download \u003d glance.async_.flows._internal_plugins.web_download:get_flow"},{"line_number":84,"context_line":"    copy_image \u003d glance.async_.flows._internal_plugins.copy_image:get_flow"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"[egg_info]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":28,"id":"06421a4f_4525028a","line":84,"updated":"2022-08-09 16:05:18.000000000","message":"Missing glance_download here, which is why I can\u0027t load the plugin on my devstack.","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"76448bea1cf3c36820ab8af59abba18ba3028c3a","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"glance.image_import.internal_plugins \u003d"},{"line_number":83,"context_line":"    web_download \u003d glance.async_.flows._internal_plugins.web_download:get_flow"},{"line_number":84,"context_line":"    copy_image \u003d glance.async_.flows._internal_plugins.copy_image:get_flow"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"[egg_info]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":28,"id":"bad171af_34806581","line":84,"in_reply_to":"06421a4f_4525028a","updated":"2022-08-23 17:18:00.000000000","message":"Done","commit_id":"3c01628423d6609e75b78ed2628502876352ec2f"}]}
