)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a1caaa253cc5409be392e362d9bd5a9c65d6f77e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5110c525_4cce9617","updated":"2022-04-06 14:24:53.000000000","message":"A few typos that should be addressed please.","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5da706e17cc0826f3a6283d2f3a30cbe1fafc45e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"91ee43bf_c68ccaa8","updated":"2022-04-06 14:47:11.000000000","message":"Gorka makes some good points.  Two typos noted inline.","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ea969c73_15179f29","updated":"2022-04-07 11:18:45.000000000","message":"Thanks Jay, Gorka and Brian","commit_id":"d97544ac3c841db7ad6732197336e3efcc42b468"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"64de4f2e6661c416806815c1252d3082f7d59dbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"64fd1c7a_b9a2ce8e","updated":"2024-03-18 21:04:04.000000000","message":"Text is good and renders well in HTML.\n\nWe should make a note somewhere that we want to use this pattern, that is, put the detailed documentation into the interface class and have a short docstring with a reference to the interface class in the driver class.","commit_id":"308f08be3c6a48ed65b98331cb7aa16c51a71994"},{"author":{"_account_id":36345,"name":"saikrishna","display_name":"saikrishna","email":"gksaikrishna@gmail.com"},"change_message_id":"945090b00ae5793aec24883dd6298a8494241b7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ebb5d5af_5702a159","updated":"2024-03-24 17:28:44.000000000","message":"LGTM","commit_id":"da8d6bfb75f7274b85dc523871b426dc62d4cd6d"}],"cinder/interface/volume_driver.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"84cd8d862b4c67d0865453d6a6a003688259e012","unresolved":true,"context_lines":[{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":274,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"}],"source_content_type":"text/x-python","patch_set":2,"id":"37fc6ea3_29a78691","line":274,"updated":"2022-04-06 14:37:06.000000000","message":"I believe this docstring is missing some important information.\n\n- Why does this method exist?\n- Is it required for all drivers to implement it or is there a default implementation?\n- When would a driver what to implement it?","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":274,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"}],"source_content_type":"text/x-python","patch_set":2,"id":"88e4a8cc_2c2dc015","line":274,"in_reply_to":"37fc6ea3_29a78691","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"84cd8d862b4c67d0865453d6a6a003688259e012","unresolved":true,"context_lines":[{"line_number":273,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":274,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"},{"line_number":278,"context_line":"        volumes. This does not attach an encryptor layer when connecting"},{"line_number":279,"context_line":"        to the volume. The empty volumes is already created before this method"},{"line_number":280,"context_line":"        is called."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        :param context: Security/policy info for the request."}],"source_content_type":"text/x-python","patch_set":2,"id":"0217834f_544d157a","line":279,"range":{"start_line":276,"start_character":8,"end_line":279,"end_character":22},"updated":"2022-04-06 14:37:06.000000000","message":"nit: This part should probably go *after* saying what the method is meant to do.","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a1caaa253cc5409be392e362d9bd5a9c65d6f77e","unresolved":true,"context_lines":[{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"},{"line_number":278,"context_line":"        volumes. This does not attach an encryptor layer when connecting"},{"line_number":279,"context_line":"        to the volume. The empty volumes is already created before this method"},{"line_number":280,"context_line":"        is called."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        :param context: Security/policy info for the request."}],"source_content_type":"text/x-python","patch_set":2,"id":"4ad05a92_fb7fbd98","line":279,"range":{"start_line":279,"start_character":33,"end_line":279,"end_character":40},"updated":"2022-04-06 14:24:53.000000000","message":"volume","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":274,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"},{"line_number":278,"context_line":"        volumes. This does not attach an encryptor layer when connecting"},{"line_number":279,"context_line":"        to the volume. The empty volumes is already created before this method"},{"line_number":280,"context_line":"        is called."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        :param context: Security/policy info for the request."}],"source_content_type":"text/x-python","patch_set":2,"id":"a4f70eda_4efa63ce","line":279,"range":{"start_line":276,"start_character":8,"end_line":279,"end_character":22},"in_reply_to":"0217834f_544d157a","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        This will only be called for unencrypted volumes and we have a"},{"line_number":277,"context_line":"        different method, copy_image_to_encrypted_volume, for encrypted"},{"line_number":278,"context_line":"        volumes. This does not attach an encryptor layer when connecting"},{"line_number":279,"context_line":"        to the volume. The empty volumes is already created before this method"},{"line_number":280,"context_line":"        is called."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        :param context: Security/policy info for the request."}],"source_content_type":"text/x-python","patch_set":2,"id":"83de7197_963a417d","line":279,"range":{"start_line":279,"start_character":33,"end_line":279,"end_character":40},"in_reply_to":"4ad05a92_fb7fbd98","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5da706e17cc0826f3a6283d2f3a30cbe1fafc45e","unresolved":true,"context_lines":[{"line_number":282,"context_line":"        :param context: Security/policy info for the request."},{"line_number":283,"context_line":"        :param volume: The volume to create as OVO instance. Although it"},{"line_number":284,"context_line":"                       provides dictionary compatibility, drivers should"},{"line_number":285,"context_line":"                       use attributes to access it\u0027s values."},{"line_number":286,"context_line":"        :param image_service: The image service to use as"},{"line_number":287,"context_line":"                              ``GlanceImageService`` instance."},{"line_number":288,"context_line":"        :param image_id: The image identifier as string type representing ID"}],"source_content_type":"text/x-python","patch_set":2,"id":"83654fb5_ab3aeb14","line":285,"range":{"start_line":285,"start_character":48,"end_line":285,"end_character":52},"updated":"2022-04-06 14:47:11.000000000","message":"its","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        :param context: Security/policy info for the request."},{"line_number":283,"context_line":"        :param volume: The volume to create as OVO instance. Although it"},{"line_number":284,"context_line":"                       provides dictionary compatibility, drivers should"},{"line_number":285,"context_line":"                       use attributes to access it\u0027s values."},{"line_number":286,"context_line":"        :param image_service: The image service to use as"},{"line_number":287,"context_line":"                              ``GlanceImageService`` instance."},{"line_number":288,"context_line":"        :param image_id: The image identifier as string type representing ID"}],"source_content_type":"text/x-python","patch_set":2,"id":"c37c1f0c_487e1371","line":285,"range":{"start_line":285,"start_character":48,"end_line":285,"end_character":52},"in_reply_to":"83654fb5_ab3aeb14","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5da706e17cc0826f3a6283d2f3a30cbe1fafc45e","unresolved":true,"context_lines":[{"line_number":285,"context_line":"                       use attributes to access it\u0027s values."},{"line_number":286,"context_line":"        :param image_service: The image service to use as"},{"line_number":287,"context_line":"                              ``GlanceImageService`` instance."},{"line_number":288,"context_line":"        :param image_id: The image identifier as string type representing ID"},{"line_number":289,"context_line":"                         of the image. It can be used for logging, raising"},{"line_number":290,"context_line":"                         exceptions and identifying the image that was being"},{"line_number":291,"context_line":"                         worked with to create temporary files or to get"}],"source_content_type":"text/x-python","patch_set":2,"id":"d802de73_46169e6b","line":288,"range":{"start_line":288,"start_character":74,"end_line":288,"end_character":76},"updated":"2022-04-06 14:47:11.000000000","message":"the ID","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                       use attributes to access it\u0027s values."},{"line_number":286,"context_line":"        :param image_service: The image service to use as"},{"line_number":287,"context_line":"                              ``GlanceImageService`` instance."},{"line_number":288,"context_line":"        :param image_id: The image identifier as string type representing ID"},{"line_number":289,"context_line":"                         of the image. It can be used for logging, raising"},{"line_number":290,"context_line":"                         exceptions and identifying the image that was being"},{"line_number":291,"context_line":"                         worked with to create temporary files or to get"}],"source_content_type":"text/x-python","patch_set":2,"id":"eaba49e7_3e46365a","line":288,"range":{"start_line":288,"start_character":74,"end_line":288,"end_character":76},"in_reply_to":"d802de73_46169e6b","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fe3389965c5bf41269639225a97b42569bf0c844","unresolved":false,"context_lines":[{"line_number":298,"context_line":"        This method is called when we request a ``create bootable volume from"},{"line_number":299,"context_line":"        image`` operation for an unencrypted volume. There is a generic"},{"line_number":300,"context_line":"        implementation so it is not mandatory for drivers to implement it."},{"line_number":301,"context_line":"        This should be overriden/implemented by the driver when they can"},{"line_number":302,"context_line":"        provide optimization in the path to copy image from the Image service"},{"line_number":303,"context_line":"        (Glance) to the Block device (Cinder volume) than the generic"},{"line_number":304,"context_line":"        implementation. For example, RBD does an import of the image file from"}],"source_content_type":"text/x-python","patch_set":4,"id":"aaa8bb59_ed6e9493","line":301,"range":{"start_line":301,"start_character":64,"end_line":301,"end_character":68},"updated":"2024-03-19 19:12:38.000000000","message":"it","commit_id":"308f08be3c6a48ed65b98331cb7aa16c51a71994"}],"cinder/volume/driver.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a1caaa253cc5409be392e362d9bd5a9c65d6f77e","unresolved":true,"context_lines":[{"line_number":845,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":846,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"        Refer to cinder/interface/volume_driver.py for addition info."},{"line_number":849,"context_line":"        \"\"\""},{"line_number":850,"context_line":"        self._copy_image_data_to_volume("},{"line_number":851,"context_line":"            context, volume, image_service, image_id, encrypted\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ea75248_e8cbbb5c","line":848,"range":{"start_line":848,"start_character":55,"end_line":848,"end_character":63},"updated":"2022-04-06 14:24:53.000000000","message":"additional","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4777c07cdff5f4e8d1bdfaaca1bd81ad563e3515","unresolved":false,"context_lines":[{"line_number":845,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":846,"context_line":"        \"\"\"Fetch image from image_service and write to unencrypted volume."},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"        Refer to cinder/interface/volume_driver.py for addition info."},{"line_number":849,"context_line":"        \"\"\""},{"line_number":850,"context_line":"        self._copy_image_data_to_volume("},{"line_number":851,"context_line":"            context, volume, image_service, image_id, encrypted\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5b7ef258_32f9c3be","line":848,"range":{"start_line":848,"start_character":55,"end_line":848,"end_character":63},"in_reply_to":"7ea75248_e8cbbb5c","updated":"2022-04-07 11:18:45.000000000","message":"Done","commit_id":"9c137cc4383caefa132e95adb65d118e291d8a04"}]}
