)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dan Smith \u003cdansmith@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-08 08:58:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add cache_image() support to the compute rpc, api, and manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This provides the API and RPC plumbing to call cache_image() on a"},{"line_number":10,"context_line":"given compute node. It also defines the status information that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_ded282d1","line":7,"range":{"start_line":7,"start_character":46,"end_line":7,"end_character":49},"updated":"2019-10-09 18:52:38.000000000","message":"Is this a mistake? This is split out right?","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c97b30f7c18c920acb182adc2c86279b3bb4f49a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dan Smith \u003cdansmith@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-08 08:58:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add cache_image() support to the compute rpc, api, and manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This provides the API and RPC plumbing to call cache_image() on a"},{"line_number":10,"context_line":"given compute node. It also defines the status information that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_f11a0f7b","line":7,"range":{"start_line":7,"start_character":46,"end_line":7,"end_character":49},"in_reply_to":"3fa7e38b_3147474f","updated":"2019-10-09 19:39:48.000000000","message":"What is \u0027compute api\u0027 here though? RPC API? Because when I read this I think nova.compute.api.API which isn\u0027t changed in this patch.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05d2ae7115570cfacdd719ebfb7d956d85a52bcd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dan Smith \u003cdansmith@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-08 08:58:28 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add cache_image() support to the compute rpc, api, and manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This provides the API and RPC plumbing to call cache_image() on a"},{"line_number":10,"context_line":"given compute node. It also defines the status information that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_3147474f","line":7,"range":{"start_line":7,"start_character":46,"end_line":7,"end_character":49},"in_reply_to":"3fa7e38b_ded282d1","updated":"2019-10-09 18:55:43.000000000","message":"This is supposed to mean \"compute rpc\", \"compute api\", and \"compute manager\".","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add cache_image() support to the compute rpc, api, and manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This provides the API and RPC plumbing to call cache_image() on a"},{"line_number":10,"context_line":"given compute node. It also defines the status information that we"},{"line_number":11,"context_line":"return to the caller to indicate what has been done."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_9ed88aef","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":21},"updated":"2019-10-09 18:52:38.000000000","message":"same","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"}],"nova/compute/manager.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ff6c074b072b6f6a0b548724ca91ce4c63d5836b","unresolved":false,"context_lines":[{"line_number":9361,"context_line":"            except NotImplementedError:"},{"line_number":9362,"context_line":"                LOG.warning(\u0027Virt driver does not support image pre-caching;\u0027"},{"line_number":9363,"context_line":"                            \u0027 ignoring request\u0027)"},{"line_number":9364,"context_line":"                # NOTE(danms): Yes, technically we could short-circuit here to"},{"line_number":9365,"context_line":"                # avoid trying the rest of the images, but it\u0027s very cheap to"},{"line_number":9366,"context_line":"                # just keep hitting the NotImplementedError to keep the logic"},{"line_number":9367,"context_line":"                # clean."},{"line_number":9368,"context_line":"                results[image_id] \u003d \u0027unsupported\u0027"},{"line_number":9369,"context_line":"            except Exception as e:"},{"line_number":9370,"context_line":"                results[image_id] \u003d \u0027error\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3c097a94","line":9367,"range":{"start_line":9364,"start_character":0,"end_line":9367,"end_character":24},"updated":"2019-10-08 15:49:56.000000000","message":"One thing we could do to simplify that is have the driver indicate that it supports image pre-cache (through traits, driver capabilities, whatever), and start off by returning if our driver doesn\u0027t support it.","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ce26ef8ef200bcc9ff2c7aa3ed88724b4a276069","unresolved":false,"context_lines":[{"line_number":9361,"context_line":"            except NotImplementedError:"},{"line_number":9362,"context_line":"                LOG.warning(\u0027Virt driver does not support image pre-caching;\u0027"},{"line_number":9363,"context_line":"                            \u0027 ignoring request\u0027)"},{"line_number":9364,"context_line":"                # NOTE(danms): Yes, technically we could short-circuit here to"},{"line_number":9365,"context_line":"                # avoid trying the rest of the images, but it\u0027s very cheap to"},{"line_number":9366,"context_line":"                # just keep hitting the NotImplementedError to keep the logic"},{"line_number":9367,"context_line":"                # clean."},{"line_number":9368,"context_line":"                results[image_id] \u003d \u0027unsupported\u0027"},{"line_number":9369,"context_line":"            except Exception as e:"},{"line_number":9370,"context_line":"                results[image_id] \u003d \u0027error\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e23d7cdd","line":9367,"range":{"start_line":9364,"start_character":0,"end_line":9367,"end_character":24},"in_reply_to":"3fa7e38b_3c097a94","updated":"2019-10-08 15:56:17.000000000","message":"Well, I was thinking that in some cases we might want to allow the driver to report that it can\u0027t download a particular type of image, say \"I don\u0027t support vmdks, why did you ask me to cache it?\"","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ff6c074b072b6f6a0b548724ca91ce4c63d5836b","unresolved":false,"context_lines":[{"line_number":9366,"context_line":"                # just keep hitting the NotImplementedError to keep the logic"},{"line_number":9367,"context_line":"                # clean."},{"line_number":9368,"context_line":"                results[image_id] \u003d \u0027unsupported\u0027"},{"line_number":9369,"context_line":"            except Exception as e:"},{"line_number":9370,"context_line":"                results[image_id] \u003d \u0027error\u0027"},{"line_number":9371,"context_line":"                LOG.error(\u0027Failed to cache image %(image_id)s: %(err)s\u0027,"},{"line_number":9372,"context_line":"                          {\u0027image_id\u0027: image_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_222e34fa","line":9369,"updated":"2019-10-08 15:49:56.000000000","message":"I\u0027m trying to think through the exception handling - this pokemon-catcher means that nothing from the compute manager and \"below\" will get raised back up to the conductor.","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ce26ef8ef200bcc9ff2c7aa3ed88724b4a276069","unresolved":false,"context_lines":[{"line_number":9366,"context_line":"                # just keep hitting the NotImplementedError to keep the logic"},{"line_number":9367,"context_line":"                # clean."},{"line_number":9368,"context_line":"                results[image_id] \u003d \u0027unsupported\u0027"},{"line_number":9369,"context_line":"            except Exception as e:"},{"line_number":9370,"context_line":"                results[image_id] \u003d \u0027error\u0027"},{"line_number":9371,"context_line":"                LOG.error(\u0027Failed to cache image %(image_id)s: %(err)s\u0027,"},{"line_number":9372,"context_line":"                          {\u0027image_id\u0027: image_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_4259f057","line":9369,"in_reply_to":"3fa7e38b_222e34fa","updated":"2019-10-08 15:56:17.000000000","message":"Yep, per the docstring. We report that there was an error, and log it on this compute so they can check it out. Since it\u0027s a bulk call, I think we want to continue on and not break if just one image out of the set fails, right?","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":9212,"context_line":""},{"line_number":9213,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.image_cache_manager_interval,"},{"line_number":9214,"context_line":"                                 external_process_ok\u003dTrue)"},{"line_number":9215,"context_line":"    def _run_image_cache_manager_pass(self, context):"},{"line_number":9216,"context_line":"        \"\"\"Run a single pass of the image cache manager.\"\"\""},{"line_number":9217,"context_line":""},{"line_number":9218,"context_line":"        if not self.driver.capabilities.get(\"has_imagecache\", False):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3e8f16ce","line":9215,"updated":"2019-10-09 18:52:38.000000000","message":"nit: you might want to move the new method closer to this one.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":9439,"context_line":"        :param context: The RequestContext"},{"line_number":9440,"context_line":"        :param image_ids: The image IDs to be cached"},{"line_number":9441,"context_line":"        :return: A dict, keyed by image-id where the values are one of:"},{"line_number":9442,"context_line":"                 \u0027cached\u0027 if the image was downloaded,"},{"line_number":9443,"context_line":"                 \u0027existing\u0027 if the image was already in the cache,"},{"line_number":9444,"context_line":"                 \u0027unsupported\u0027 if the virt driver does not support caching,"},{"line_number":9445,"context_line":"                 \u0027error\u0027 if the virt driver raised an exception."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_be69c6f8","line":9442,"updated":"2019-10-09 18:52:38.000000000","message":"nit: we might want to define constants for these since I\u0027m guessing conductor is going to be looking at them as well. I\u0027m not really sure where you\u0027d define them though.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28e11e6a462d28211f7fdbc86fe02142c58c8531","unresolved":false,"context_lines":[{"line_number":9439,"context_line":"        :param context: The RequestContext"},{"line_number":9440,"context_line":"        :param image_ids: The image IDs to be cached"},{"line_number":9441,"context_line":"        :return: A dict, keyed by image-id where the values are one of:"},{"line_number":9442,"context_line":"                 \u0027cached\u0027 if the image was downloaded,"},{"line_number":9443,"context_line":"                 \u0027existing\u0027 if the image was already in the cache,"},{"line_number":9444,"context_line":"                 \u0027unsupported\u0027 if the virt driver does not support caching,"},{"line_number":9445,"context_line":"                 \u0027error\u0027 if the virt driver raised an exception."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_61e39fda","line":9442,"in_reply_to":"3fa7e38b_707ccb82","updated":"2019-10-10 15:59:51.000000000","message":"\u003e And yeah, I don\u0027t really want conductor having to import the\n \u003e compute manager module to get them. How about I define them as\n \u003e constants when we add something that uses them, in case there\u0027s a\n \u003e better common ground at that point?\n\nFine with me.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"32acefa4e155ea2b76eef76c13a30725dfa200b6","unresolved":false,"context_lines":[{"line_number":9439,"context_line":"        :param context: The RequestContext"},{"line_number":9440,"context_line":"        :param image_ids: The image IDs to be cached"},{"line_number":9441,"context_line":"        :return: A dict, keyed by image-id where the values are one of:"},{"line_number":9442,"context_line":"                 \u0027cached\u0027 if the image was downloaded,"},{"line_number":9443,"context_line":"                 \u0027existing\u0027 if the image was already in the cache,"},{"line_number":9444,"context_line":"                 \u0027unsupported\u0027 if the virt driver does not support caching,"},{"line_number":9445,"context_line":"                 \u0027error\u0027 if the virt driver raised an exception."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f131af0c","line":9442,"in_reply_to":"3fa7e38b_be69c6f8","updated":"2019-10-09 19:39:06.000000000","message":"Later: I see that conductor isn\u0027t actually using the result for anything. Is this for later consumption then?","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a5eb0448deb6502424073e778d4fb0dbd95dcafa","unresolved":false,"context_lines":[{"line_number":9439,"context_line":"        :param context: The RequestContext"},{"line_number":9440,"context_line":"        :param image_ids: The image IDs to be cached"},{"line_number":9441,"context_line":"        :return: A dict, keyed by image-id where the values are one of:"},{"line_number":9442,"context_line":"                 \u0027cached\u0027 if the image was downloaded,"},{"line_number":9443,"context_line":"                 \u0027existing\u0027 if the image was already in the cache,"},{"line_number":9444,"context_line":"                 \u0027unsupported\u0027 if the virt driver does not support caching,"},{"line_number":9445,"context_line":"                 \u0027error\u0027 if the virt driver raised an exception."}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_707ccb82","line":9442,"in_reply_to":"3fa7e38b_f131af0c","updated":"2019-10-10 14:16:22.000000000","message":"Yup, I figure we\u0027re making a stable call so it\u0027s synchronous, we might as well return something so at least it could log overall stats for the process at some point if we want.\n\nAnd yeah, I don\u0027t really want conductor having to import the compute manager module to get them. How about I define them as constants when we add something that uses them, in case there\u0027s a better common ground at that point?","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":9447,"context_line":""},{"line_number":9448,"context_line":"        results \u003d {}"},{"line_number":9449,"context_line":""},{"line_number":9450,"context_line":"        LOG.info(\u0027Caching %i image(s) by request\u0027, len(image_ids))"},{"line_number":9451,"context_line":"        for image_id in image_ids:"},{"line_number":9452,"context_line":"            try:"},{"line_number":9453,"context_line":"                cached \u003d self.driver.cache_image(context, image_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3e56362c","line":9450,"updated":"2019-10-09 18:52:38.000000000","message":"Before even logging this and entering the loop we could check if the driver claims the has_imagecache capability and if not just mark all image results as \u0027unsupported\u0027 and avoid even calling the driver. Maybe not a big deal though since if the driver doesn\u0027t support that it\u0027s going to raise NotImplementedError.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"aab56a82f1c8cd1a56e8b7ef468370c5bbeaf818","unresolved":false,"context_lines":[{"line_number":9447,"context_line":""},{"line_number":9448,"context_line":"        results \u003d {}"},{"line_number":9449,"context_line":""},{"line_number":9450,"context_line":"        LOG.info(\u0027Caching %i image(s) by request\u0027, len(image_ids))"},{"line_number":9451,"context_line":"        for image_id in image_ids:"},{"line_number":9452,"context_line":"            try:"},{"line_number":9453,"context_line":"                cached \u003d self.driver.cache_image(context, image_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_497c9782","line":9450,"range":{"start_line":9450,"start_character":25,"end_line":9450,"end_character":29},"updated":"2019-10-10 06:22:45.000000000","message":"Here, \"%i\" it\u0027s the same as \"%d\", receive a decimal numbers, but \"%i\" can automatically convert the input octal (or hexadecimal) to decimal.\nThis is my first time to know \"%i\" ^^","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":9455,"context_line":"                    results[image_id] \u003d \u0027cached\u0027"},{"line_number":9456,"context_line":"                else:"},{"line_number":9457,"context_line":"                    results[image_id] \u003d \u0027existing\u0027"},{"line_number":9458,"context_line":"            except NotImplementedError:"},{"line_number":9459,"context_line":"                LOG.warning(\u0027Virt driver does not support image pre-caching;\u0027"},{"line_number":9460,"context_line":"                            \u0027 ignoring request\u0027)"},{"line_number":9461,"context_line":"                # NOTE(danms): Yes, technically we could short-circuit here to"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1e37ba01","line":9458,"range":{"start_line":9458,"start_character":19,"end_line":9458,"end_character":38},"updated":"2019-10-09 18:52:38.000000000","message":"If we hit this, we could just fill the results dict and return, right? Meaning we don\u0027t need to keep hitting the driver method for the rest of the images since it\u0027s never going to work.\n\n(later)\n\nHeh now I see your NOTE...","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0baa8308531c56f1c7a0b00f44a3404bd5ebde35","unresolved":false,"context_lines":[{"line_number":9271,"context_line":"                          {\u0027image_id\u0027: image_id,"},{"line_number":9272,"context_line":"                           \u0027err\u0027: e})"},{"line_number":9273,"context_line":""},{"line_number":9274,"context_line":"        return results"},{"line_number":9275,"context_line":""},{"line_number":9276,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.instance_delete_interval)"},{"line_number":9277,"context_line":"    def _run_pending_deletes(self, context):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_843337ab","line":9274,"updated":"2019-10-11 15:51:55.000000000","message":"In general it make sense to compile the results in a dict. But the caller (conductor) does not care about it today and the compute side (this) does not log the result either (except for error). So this dict now feels like wasted.","commit_id":"be278006a5862d237ead41025ad33e678b7fa62e"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ff6c074b072b6f6a0b548724ca91ce4c63d5836b","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        version \u003d \u00275.4\u0027"},{"line_number":1241,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1242,"context_line":"        if not client.can_send_version(version):"},{"line_number":1243,"context_line":"            raise exception.NovaException(\u0027Compute RPC version pin does not \u0027"},{"line_number":1244,"context_line":"                                          \u0027allow cache_images() to be called\u0027)"},{"line_number":1245,"context_line":"        # This is a potentially very long-running call, so we provide the"},{"line_number":1246,"context_line":"        # two timeout values which enables the call monitor in oslo.messaging"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_424810cb","line":1243,"updated":"2019-10-08 15:49:56.000000000","message":"This on the other hand will get bubbled up to the conductor.","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ce26ef8ef200bcc9ff2c7aa3ed88724b4a276069","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        version \u003d \u00275.4\u0027"},{"line_number":1241,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1242,"context_line":"        if not client.can_send_version(version):"},{"line_number":1243,"context_line":"            raise exception.NovaException(\u0027Compute RPC version pin does not \u0027"},{"line_number":1244,"context_line":"                                          \u0027allow cache_images() to be called\u0027)"},{"line_number":1245,"context_line":"        # This is a potentially very long-running call, so we provide the"},{"line_number":1246,"context_line":"        # two timeout values which enables the call monitor in oslo.messaging"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_221dd472","line":1243,"in_reply_to":"3fa7e38b_424810cb","updated":"2019-10-08 15:56:17.000000000","message":"As it should. This is a hard configuration block, and it\u0027s related to whether or not the conductor can actually make this call right now. The other call hides virt exceptions because the call itself is proceeding, and one (or more) calls to the virt driver failed, and the documented behavior of the call is that it returns the status of each image.","commit_id":"a1fbda2bc5b09caaddde118dc30fbaa9f08f2667"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"        # so that this can run for extended periods."},{"line_number":1248,"context_line":"        cctxt \u003d client.prepare(server\u003dhost, version\u003dversion,"},{"line_number":1249,"context_line":"                               call_monitor_timeout\u003dCONF.rpc_response_timeout,"},{"line_number":1250,"context_line":"                               timeout\u003dCONF.long_rpc_timeout)"},{"line_number":1251,"context_line":"        return cctxt.call(ctxt, \u0027cache_images\u0027, image_ids\u003dimage_ids)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3efab642","line":1250,"range":{"start_line":1250,"start_character":44,"end_line":1250,"end_character":60},"updated":"2019-10-09 18:52:38.000000000","message":"We should update the help for this option to mention it\u0027s used by this operation as well:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.long_rpc_timeout","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"aab56a82f1c8cd1a56e8b7ef468370c5bbeaf818","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"        # so that this can run for extended periods."},{"line_number":1248,"context_line":"        cctxt \u003d client.prepare(server\u003dhost, version\u003dversion,"},{"line_number":1249,"context_line":"                               call_monitor_timeout\u003dCONF.rpc_response_timeout,"},{"line_number":1250,"context_line":"                               timeout\u003dCONF.long_rpc_timeout)"},{"line_number":1251,"context_line":"        return cctxt.call(ctxt, \u0027cache_images\u0027, image_ids\u003dimage_ids)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e9c8e3a8","line":1250,"range":{"start_line":1250,"start_character":44,"end_line":1250,"end_character":60},"in_reply_to":"3fa7e38b_3efab642","updated":"2019-10-10 06:22:45.000000000","message":"+1, shouold add this operation to it\u0027s description.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0baa8308531c56f1c7a0b00f44a3404bd5ebde35","unresolved":false,"context_lines":[{"line_number":5849,"context_line":"        with mock.patch.object(self.compute.driver, \u0027cache_image\u0027) as c:"},{"line_number":5850,"context_line":"            c.side_effect \u003d test.TestingException(\u0027foo\u0027)"},{"line_number":5851,"context_line":"            r \u003d self.compute.cache_images(self.context, [\u0027an-image\u0027])"},{"line_number":5852,"context_line":"            self.assertEqual({\u0027an-image\u0027: \u0027error\u0027}, r)"},{"line_number":5853,"context_line":""},{"line_number":5854,"context_line":"    def test_cache_images_multi(self):"},{"line_number":5855,"context_line":"        with mock.patch.object(self.compute.driver, \u0027cache_image\u0027) as c:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4458df2f","line":5852,"updated":"2019-10-11 15:51:55.000000000","message":"you could assert the logging here like in test_cache_images_unsupported","commit_id":"be278006a5862d237ead41025ad33e678b7fa62e"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b4eec6d9b32eed40a354b63bdf550f080e8cac4","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        rpcapi.router.client \u003d mock.Mock()"},{"line_number":696,"context_line":"        mock_client \u003d mock.MagicMock()"},{"line_number":697,"context_line":"        rpcapi.router.client.return_value \u003d mock_client"},{"line_number":698,"context_line":"        # So we expect that the messages is backported therefore the"},{"line_number":699,"context_line":"        # request_spec is dropped"},{"line_number":700,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":701,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":702,"context_line":"                          rpcapi.cache_images, ctxt, \u0027host\u0027, [\u0027image\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_be9b0615","line":699,"range":{"start_line":698,"start_character":8,"end_line":699,"end_character":33},"updated":"2019-10-09 18:52:38.000000000","message":"This is clearly wrong copy/paste.","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a5eb0448deb6502424073e778d4fb0dbd95dcafa","unresolved":false,"context_lines":[{"line_number":695,"context_line":"        rpcapi.router.client \u003d mock.Mock()"},{"line_number":696,"context_line":"        mock_client \u003d mock.MagicMock()"},{"line_number":697,"context_line":"        rpcapi.router.client.return_value \u003d mock_client"},{"line_number":698,"context_line":"        # So we expect that the messages is backported therefore the"},{"line_number":699,"context_line":"        # request_spec is dropped"},{"line_number":700,"context_line":"        mock_client.can_send_version.return_value \u003d False"},{"line_number":701,"context_line":"        self.assertRaises(exception.NovaException,"},{"line_number":702,"context_line":"                          rpcapi.cache_images, ctxt, \u0027host\u0027, [\u0027image\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_50eaef0e","line":699,"range":{"start_line":698,"start_character":8,"end_line":699,"end_character":33},"in_reply_to":"3fa7e38b_be9b0615","updated":"2019-10-10 14:16:22.000000000","message":"Heh, whoopsie :)","commit_id":"860903df88f348b7a5aa4b9a177e24a3c1fdf464"}]}
