)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"c9d309d0126547e66f7a720f23429577eaf75bd4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle missing internal plugin scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If internal plugin is not expicitly mentioned in the setup.cfg"},{"line_number":10,"context_line":"then loading of the plugin fails at the time of import API with"},{"line_number":11,"context_line":"stacktrace by which it is difficult to understand the exact cause"},{"line_number":12,"context_line":"of failure."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"27b43f1a_cd1233fb","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":62},"updated":"2022-08-10 11:14:26.000000000","message":"Obviously this should never be the case. We probably need test for the scenario if we had situation where the entrypoints were not correctly defined.","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"300e86a7bc93def594e0a582aa7412f8a5b4def0","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle missing internal plugin scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If internal plugin is not expicitly mentioned in the setup.cfg"},{"line_number":10,"context_line":"then loading of the plugin fails at the time of import API with"},{"line_number":11,"context_line":"stacktrace by which it is difficult to understand the exact cause"},{"line_number":12,"context_line":"of failure."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"603e62a3_d5476406","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":62},"in_reply_to":"27b43f1a_cd1233fb","updated":"2022-08-10 15:35:07.000000000","message":"This isn\u0027t the only way it can happen. If your install is incomplete, you\u0027re running directly from the source tree, or you have split glance into multiple packages and one is not installed, this can happen.","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7488068c57fec1959fb4c401aa38bcba4ff6397d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle missing internal plugin scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If internal plugin is not expicitly mentioned in the setup.cfg"},{"line_number":10,"context_line":"then loading of the plugin fails at the time of import API with"},{"line_number":11,"context_line":"stacktrace by which it is difficult to understand the exact cause"},{"line_number":12,"context_line":"of failure."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"79d47912_f907bbc5","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":62},"in_reply_to":"603e62a3_d5476406","updated":"2022-08-11 05:10:10.000000000","message":"Done","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"c9d309d0126547e66f7a720f23429577eaf75bd4","unresolved":true,"context_lines":[{"line_number":12,"context_line":"of failure."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Added exception with useful error message for the same as well as"},{"line_number":15,"context_line":"releasing the task lock so that the same image can be reused for"},{"line_number":16,"context_line":"further import actions."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I42dd792323ecb67864bfbd887b96b6cf0057632a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ca5c0ce3_98c729da","line":15,"range":{"start_line":15,"start_character":54,"end_line":15,"end_character":60},"updated":"2022-08-10 11:14:26.000000000","message":"NIT: re-used","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7488068c57fec1959fb4c401aa38bcba4ff6397d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"of failure."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Added exception with useful error message for the same as well as"},{"line_number":15,"context_line":"releasing the task lock so that the same image can be reused for"},{"line_number":16,"context_line":"further import actions."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I42dd792323ecb67864bfbd887b96b6cf0057632a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"cc60978f_525f921c","line":15,"range":{"start_line":15,"start_character":54,"end_line":15,"end_character":60},"in_reply_to":"ca5c0ce3_98c729da","updated":"2022-08-11 05:10:10.000000000","message":"Done","commit_id":"cead9805848c379c254319b553ab2d928c271a81"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bec9156cbc5ccd04ff8c9cb2bec8d86c2780ba34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ade02cc4_fc3f7a91","updated":"2022-08-10 11:10:19.000000000","message":"few comments inline","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"0c86f2441e3624fc78b85e35adaa39336c271d38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"34348330_a2c5acb2","updated":"2022-08-26 12:18:53.000000000","message":"I think we should have this change in before the release.","commit_id":"923683bad330a948e3be985c06c82a40a4576977"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"d841fcd530931bb49a549eee045f7d5b68fd53cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"416d73a0_ebcb8c5c","updated":"2022-08-17 16:38:00.000000000","message":"Looks fine to me. Thanks Abhishek","commit_id":"923683bad330a948e3be985c06c82a40a4576977"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a2721c505ba7a414c0dec4a2552acf866bfd2a1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8f08c887_5fcf295d","updated":"2022-08-11 06:51:29.000000000","message":"recheck nova shelve case failure","commit_id":"923683bad330a948e3be985c06c82a40a4576977"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"44ae48905c3755b6e232b15b6126bdba79b44e68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"83423fef_6499245d","updated":"2022-08-30 13:32:52.000000000","message":"Mostly looks good, see comment inline.","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"4c03a4d252bcf7e206faf56b04041a2ee75be65f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a8c98a63_b2a3d3e0","updated":"2022-09-01 06:05:42.000000000","message":"This needs additional work and will take time, so getting it out of m3 release!","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"}],"glance/async_/flows/_internal_plugins/__init__.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bec9156cbc5ccd04ff8c9cb2bec8d86c2780ba34","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":219,"context_line":"        invoke_kwds\u003dkwargs)"},{"line_number":220,"context_line":"    for extension in extensions.extensions:"},{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a231e24_5ea6e625","line":221,"updated":"2022-08-10 11:10:19.000000000","message":"Is this remains of your debugging?","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"73f1dfea833b2fa39d7c440b9d48993cf8ecd2b1","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":219,"context_line":"        invoke_kwds\u003dkwargs)"},{"line_number":220,"context_line":"    for extension in extensions.extensions:"},{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a2e6972e_114d475e","line":221,"in_reply_to":"2a231e24_5ea6e625","updated":"2022-08-10 14:44:45.000000000","message":"yes :D","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7488068c57fec1959fb4c401aa38bcba4ff6397d","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":219,"context_line":"        invoke_kwds\u003dkwargs)"},{"line_number":220,"context_line":"    for extension in extensions.extensions:"},{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"963fc168_88bd7fc6","line":221,"in_reply_to":"a2e6972e_114d475e","updated":"2022-08-11 05:10:10.000000000","message":"Done","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bec9156cbc5ccd04ff8c9cb2bec8d86c2780ba34","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"efbf712b_e9ead5ca","line":224,"updated":"2022-08-10 11:10:19.000000000","message":"IMHO we should use at minimum glance.exceptions.GlanceException (preferably defining actual exception for this) so the except can be explicit. Just raising generic python Exception here forces us to use catch all and prevents us differentiating from exceptions for example raised by the NamedExtensionManager.","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"73f1dfea833b2fa39d7c440b9d48993cf8ecd2b1","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f91b6360_211eca47","line":224,"in_reply_to":"efbf712b_e9ead5ca","updated":"2022-08-10 14:44:45.000000000","message":"Ack","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"300e86a7bc93def594e0a582aa7412f8a5b4def0","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        print(extension)"},{"line_number":222,"context_line":"        return extension.obj"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    raise Exception(_(\u0027Plugin %s not found\u0027) % import_method)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c418797c_2f61e50b","line":224,"in_reply_to":"f91b6360_211eca47","updated":"2022-08-10 15:35:07.000000000","message":"Yeah, I used Exception in my trivial example on IRC, but definitely agree it should be something specific, of course.\n\nAlso \"Plugin for import method %(name)s\" would probably be more accurate for what is going on here.","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"44ae48905c3755b6e232b15b6126bdba79b44e68","unresolved":true,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    extensions \u003d named.NamedExtensionManager("},{"line_number":216,"context_line":"        \u0027glance.image_import.internal_plugins\u0027,"},{"line_number":217,"context_line":"        names\u003dtask_list,"},{"line_number":218,"context_line":"        name_order\u003dTrue,"},{"line_number":219,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":220,"context_line":"        invoke_kwds\u003dkwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"2bdec843_e5c43447","line":217,"range":{"start_line":217,"start_character":14,"end_line":217,"end_character":23},"updated":"2022-08-30 13:32:52.000000000","message":"if import_method is not in method_list, won\u0027t you get a NameError here?\n\nAlso, how does the NamedExtensionManager behave if it can\u0027t find the named plugin?  I guess it just logs (default value for warn_on_missing_entrypoint is True) and quietly returns an empty list (since we\u0027re only passing a single plugin in the task_list).","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d218b5b89ade47d5f252c23ac71868a6f3550fee","unresolved":true,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    extensions \u003d named.NamedExtensionManager("},{"line_number":216,"context_line":"        \u0027glance.image_import.internal_plugins\u0027,"},{"line_number":217,"context_line":"        names\u003dtask_list,"},{"line_number":218,"context_line":"        name_order\u003dTrue,"},{"line_number":219,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":220,"context_line":"        invoke_kwds\u003dkwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d970bfdc_68b3e332","line":217,"range":{"start_line":217,"start_character":14,"end_line":217,"end_character":23},"in_reply_to":"2bdec843_e5c43447","updated":"2022-08-30 13:36:33.000000000","message":"No, it returns None, which makes the caller get a TypeError since it expects an extension.\n\nBut yeah, seems like there\u0027s another bug here too. Although maybe we have already checked it against configured methods by this point so we don\u0027t actually see it? Definitely worth fixing and testing that though. It would terrible if users could provide garbage there and create a bunch of dead tasks, threads, and log noise as a result.","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"78abc2560986608a3725443b9f5e01b077f80279","unresolved":true,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    extensions \u003d named.NamedExtensionManager("},{"line_number":216,"context_line":"        \u0027glance.image_import.internal_plugins\u0027,"},{"line_number":217,"context_line":"        names\u003dtask_list,"},{"line_number":218,"context_line":"        name_order\u003dTrue,"},{"line_number":219,"context_line":"        invoke_on_load\u003dTrue,"},{"line_number":220,"context_line":"        invoke_kwds\u003dkwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fcd52dff_c7f25137","line":217,"range":{"start_line":217,"start_character":14,"end_line":217,"end_character":23},"in_reply_to":"d970bfdc_68b3e332","updated":"2022-09-13 07:14:50.000000000","message":"I\u0027ve tried testing this by adding some random value in internal_plugins and noticed that there is no error or warning thrown with wrong plugin value.","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"}],"glance/async_/flows/api_image_import.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bec9156cbc5ccd04ff8c9cb2bec8d86c2780ba34","unresolved":true,"context_lines":[{"line_number":815,"context_line":"                    \u0027err\u0027: err"},{"line_number":816,"context_line":"                })"},{"line_number":817,"context_line":"                LOG.error(msg)"},{"line_number":818,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":819,"context_line":"                # re-usable"},{"line_number":820,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":821,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"471ca94a_7859bf7f","line":818,"range":{"start_line":818,"start_character":47,"end_line":818,"end_character":50},"updated":"2022-08-10 11:10:19.000000000","message":"NIT: lock","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"73f1dfea833b2fa39d7c440b9d48993cf8ecd2b1","unresolved":false,"context_lines":[{"line_number":815,"context_line":"                    \u0027err\u0027: err"},{"line_number":816,"context_line":"                })"},{"line_number":817,"context_line":"                LOG.error(msg)"},{"line_number":818,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":819,"context_line":"                # re-usable"},{"line_number":820,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":821,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f64b1fc4_8cae24c9","line":818,"range":{"start_line":818,"start_character":47,"end_line":818,"end_character":50},"in_reply_to":"471ca94a_7859bf7f","updated":"2022-08-10 14:44:45.000000000","message":"Ack","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bec9156cbc5ccd04ff8c9cb2bec8d86c2780ba34","unresolved":true,"context_lines":[{"line_number":816,"context_line":"                })"},{"line_number":817,"context_line":"                LOG.error(msg)"},{"line_number":818,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":819,"context_line":"                # re-usable"},{"line_number":820,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"        if CONF.enabled_backends:"}],"source_content_type":"text/x-python","patch_set":1,"id":"f317c881_68574450","line":819,"range":{"start_line":819,"start_character":18,"end_line":819,"end_character":27},"updated":"2022-08-10 11:10:19.000000000","message":"NIT: re-used","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"73f1dfea833b2fa39d7c440b9d48993cf8ecd2b1","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                })"},{"line_number":817,"context_line":"                LOG.error(msg)"},{"line_number":818,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":819,"context_line":"                # re-usable"},{"line_number":820,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"        if CONF.enabled_backends:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a6c8b279_8d831d80","line":819,"range":{"start_line":819,"start_character":18,"end_line":819,"end_character":27},"in_reply_to":"f317c881_68574450","updated":"2022-08-10 14:44:45.000000000","message":"Ack","commit_id":"cead9805848c379c254319b553ab2d928c271a81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d218b5b89ade47d5f252c23ac71868a6f3550fee","unresolved":true,"context_lines":[{"line_number":952,"context_line":"                    \u0027err\u0027: err"},{"line_number":953,"context_line":"                })"},{"line_number":954,"context_line":"                LOG.error(msg)"},{"line_number":955,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":956,"context_line":"                # re-used"},{"line_number":957,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":958,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"747d0fd7_dfba03ba","line":955,"range":{"start_line":955,"start_character":47,"end_line":955,"end_character":50},"updated":"2022-08-30 13:36:33.000000000","message":"lock?","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"44ae48905c3755b6e232b15b6126bdba79b44e68","unresolved":true,"context_lines":[{"line_number":952,"context_line":"                    \u0027err\u0027: err"},{"line_number":953,"context_line":"                })"},{"line_number":954,"context_line":"                LOG.error(msg)"},{"line_number":955,"context_line":"                # NOTE(abhishekk): Remove task log so that image can be"},{"line_number":956,"context_line":"                # re-used"},{"line_number":957,"context_line":"                action_wrapper.drop_lock_for_task()"},{"line_number":958,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a0d7763_e71241b2","line":955,"range":{"start_line":955,"start_character":47,"end_line":955,"end_character":50},"updated":"2022-08-30 13:32:52.000000000","message":"nit: lock","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"}],"glance/tests/unit/async_/flows/test_api_image_import.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"44ae48905c3755b6e232b15b6126bdba79b44e68","unresolved":true,"context_lines":[{"line_number":124,"context_line":"    @mock.patch(\u0027glance.async_.flows._internal_plugins.get_import_plugin\u0027)"},{"line_number":125,"context_line":"    def test_get_flow_raises_exception_for_undefined_import_method("},{"line_number":126,"context_line":"            self, mock_get_import_plugin):"},{"line_number":127,"context_line":"        mock_get_import_plugin.side_effect \u003d exception.GlanceException("},{"line_number":128,"context_line":"            \"Plugin for import method \u0027web-download\u0027 not found\")"},{"line_number":129,"context_line":"        with mock.patch.object(import_flow, \u0027LOG\u0027) as mock_log:"},{"line_number":130,"context_line":"            self.assertRaises(exception.GlanceException, import_flow.get_flow,"},{"line_number":131,"context_line":"                              task_id\u003dTASK_ID1, task_type\u003dTASK_TYPE,"}],"source_content_type":"text/x-python","patch_set":3,"id":"41d912a6_940207b2","line":128,"range":{"start_line":127,"start_character":8,"end_line":128,"end_character":64},"updated":"2022-08-30 13:32:52.000000000","message":"So this test assumes that if your code change works as expected, you will handle it properly.  I think you should have a test (in another file) that mocks the NamedExtensionManager and make sure it raises the exception when you pass in a bad import plugin name.  (I think that would catch the name error i pointed out.)","commit_id":"3102a7f5479704c6237122e43f976a57f45200a1"}]}
