)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"941b5c4173e22869e42b390f95ab0e428fc45596","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6f59d7d040a3b1e84622b51735d5dada7f84c0fe"},{"line_number":14,"context_line":"Implements: blueprint volume-backed-server-rebuild"},{"line_number":15,"context_line":"Closes-Bug: #1378689"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_b3aef29d","line":15,"updated":"2018-12-18 15:59:15.000000000","message":"I think we can remove the bug reference; it\u0027s not like we are going to backport these changes.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"63fd6de85554d7848d9dbfadd857c7327634cccf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add compute version 37 to support volume backed server rebuild"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch changes the compute service and RPC version bump."},{"line_number":10,"context_line":"Add support to use a new image to rebuild the volume backed"},{"line_number":11,"context_line":"server."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1f769fc5_b71e250a","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":59},"updated":"2019-01-02 08:17:00.000000000","message":"don\u0027t see RPC bump now :)","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ramboman \u003clijie@unitedstack.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-01-03 17:42:22 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add compute version 37 to support volume backed server rebuild"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch changes the compute service and add support to use"},{"line_number":10,"context_line":"a new image to rebuild the volume backed server."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffd0ebdf_e39acd6c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":62},"updated":"2019-01-03 17:00:32.000000000","message":"The version number may change before this patch is merged, so I\u0027d just make the title more generic, e.g.:\n\n\"Support volume-backed server rebuild in compute\"","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add compute version 37 to support volume backed server rebuild"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch changes the compute service and add support to use"},{"line_number":10,"context_line":"a new image to rebuild the volume backed server."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.openstack.org/#/c/622614/"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffd0ebdf_c376a93f","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"updated":"2019-01-03 17:00:32.000000000","message":"Would be good to go into a bit more detail about the change and what it depends on (depends on new cinderclient and cinder API changes to support re-imaging the root volume).\n\nAlso should note that the compute service version is incremented to indicate the behavior change so the API can determine if volume-backed rebuild is possible for a given server.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"}],"nova/compute/manager.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"6a034258bc53917dc6b0fb4b4ffd77bd569d6c1f","unresolved":false,"context_lines":[{"line_number":489,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":490,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    target \u003d messaging.Target(version\u003d\u00275.1\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ac8c3e3a","line":492,"range":{"start_line":492,"start_character":4,"end_line":492,"end_character":44},"updated":"2018-12-19 14:52:20.000000000","message":"seems don\u0027t need to bump this as you didn\u0027t send any new params to existing functions nor adding a new function that get called by rpcapi.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0181bf71ca49cfe5499fb9e4ea6370de032d68ab","unresolved":false,"context_lines":[{"line_number":489,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":490,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    target \u003d messaging.Target(version\u003d\u00275.1\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c5ef01f9","line":492,"range":{"start_line":492,"start_character":4,"end_line":492,"end_character":44},"in_reply_to":"3f79a3b5_ac8c3e3a","updated":"2018-12-20 01:50:05.000000000","message":"It\u0027s a behavioral change in the compute which will be needed by the API code to know if the compute service on which a given instance is running has this new code to support rebuilding a volume-backed instance with a new image. It is to support rolling upgrades while you have instances on older compute service code. Remember when you had to do this for blueprint abort-live-migration-in-queued-status? It\u0027s the same concept.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"a075b79d063e60403639182132cb27e05095940f","unresolved":false,"context_lines":[{"line_number":489,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":490,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    target \u003d messaging.Target(version\u003d\u00275.1\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e571dd47","line":492,"range":{"start_line":492,"start_character":4,"end_line":492,"end_character":44},"in_reply_to":"3f79a3b5_c5ef01f9","updated":"2018-12-20 02:01:57.000000000","message":"Yes, I remember, but in that one I only bumped the service version and checked for the service version: https://review.openstack.org/#/c/573136/9/nova/compute/api.py\n:)\nI think we don\u0027t have to change RPC version, just check the service version before calling. since there is nothing changed in the rpc call.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"95b7833aa86d9bee42cc0adcd28e0aa21a43a17c","unresolved":false,"context_lines":[{"line_number":489,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":490,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    target \u003d messaging.Target(version\u003d\u00275.1\u0027)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":495,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_3df98ac7","line":492,"range":{"start_line":492,"start_character":4,"end_line":492,"end_character":44},"in_reply_to":"3f79a3b5_e571dd47","updated":"2019-01-02 19:34:01.000000000","message":"Yeah, I see what you\u0027re saying now, I was confused. We need to change the compute service version to indicate the behavior change and check that from the API, but not the actual RPC version (that remains 5.0).","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":2906,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2910,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_9315f63c","line":2909,"updated":"2018-12-18 15:58:50.000000000","message":"We need some code comments in here explaining what\u0027s going on.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2910,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2913,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d344ce50","line":2910,"updated":"2018-12-18 15:58:50.000000000","message":"We should only do this if the image is changing, otherwise we\u0027d be needlessly re-imaging the root volume, right? We should be able to tell if the image changed by comparing orig_image_ref against image_meta.id right?","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0181bf71ca49cfe5499fb9e4ea6370de032d68ab","unresolved":false,"context_lines":[{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2910,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2913,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c56aa181","line":2910,"in_reply_to":"3f79a3b5_50f8a917","updated":"2018-12-20 01:50:05.000000000","message":"I\u0027m not sure if we are saying the same thing.\n\ninstance.image_ref is \u0027\u0027 for volume-backed instances:\n\nhttps://github.com/openstack/nova/blob/f7b98a9201e37d6f6992ae62c67335022af28c8f/nova/compute/api.py#L3352\n\nHowever, for a volume-backed rebuild, we get the original image ref from the root volume\u0027s image metadata:\n\nhttps://github.com/openstack/nova/blob/f7b98a9201e37d6f6992ae62c67335022af28c8f/nova/compute/api.py#L3292\n\nThat\u0027s how we know to fail here:\n\nhttps://github.com/openstack/nova/blob/f7b98a9201e37d6f6992ae62c67335022af28c8f/nova/compute/api.py#L3302\n\nWith this new change and the new API microversion logic that will come with this feature, we will allow rebuilding a volume-backed server with a new image if (1) the microversion is used and (2) the compute service is new enough to have this code you\u0027re adding.\n\nThe problem I am trying to point out here in this logic is that it appears you are *always* re-imaging the root volume regardless of whether or not the image is changing on rebuild, which I don\u0027t think we should do - because if the underlying image isn\u0027t changing, we don\u0027t need to re-image the volume.\n\nDoes that make sense?","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"38670dd176283587b187e709f50ed5cc19265c1c","unresolved":false,"context_lines":[{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2910,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2913,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_28c48c92","line":2910,"in_reply_to":"3f79a3b5_c56aa181","updated":"2018-12-20 02:58:18.000000000","message":"Yes, we are saying the same thing.\nIf we don\u0027t re-image the volume when the image isn\u0027t changing on rebuild, the volume‘ s data inside isn\u0027t change yet. So what is the meaning of the rebuild?","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"bb47213f51c8399a576dd724a1fe2f606e52367e","unresolved":false,"context_lines":[{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2910,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2913,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_50f8a917","line":2910,"in_reply_to":"3f79a3b5_d344ce50","updated":"2018-12-19 00:47:24.000000000","message":"I don\u0027t think so. If the image isn\u0027t changing, the rebuild operation  will no changes have been made to the  instance. Isn\u0027t it? So I think  we should  re-image  the root volume if the instance is a volume backed server.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":2911,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2912,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2913,"context_line":"                try:"},{"line_number":2914,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2915,"context_line":"                                                   image_id)"},{"line_number":2916,"context_line":"                except Exception:"},{"line_number":2917,"context_line":"                    LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_73edbaff","line":2914,"updated":"2018-12-18 15:58:50.000000000","message":"This is an asynchronous operation, so we need to poll the status of the volume until the re-image is complete. If the re-image fails and the volume goes to error status, we need to set the instance to ERROR status as well (which the _error_out_instance_on_exception context manager should do for us).","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":2914,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2915,"context_line":"                                                   image_id)"},{"line_number":2916,"context_line":"                except Exception:"},{"line_number":2917,"context_line":"                    LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":2918,"context_line":"                                  instance_uuid\u003dinstance.id)"},{"line_number":2919,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":2920,"context_line":"                        self._set_instance_obj_error_state(context, instance)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        instance.task_state \u003d task_states.REBUILD_BLOCK_DEVICE_MAPPING"},{"line_number":2923,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILDING])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_73685a88","line":2920,"range":{"start_line":2917,"start_character":20,"end_line":2920,"end_character":77},"updated":"2018-12-18 15:58:50.000000000","message":"This is a bit wrong. For one thing, the cinderclient exception should get raised up through to the context manager here:\n\nhttps://review.openstack.org/#/c/625893/1/nova/compute/manager.py@3036\n\nWhich will currently set the instance to ERROR status.\n\nHowever, I think that is probably wrong to set the instance to ERROR if it was ACTIVE and nothing actually changed, i.e. cinder failed the request in the API so nothing should have changed in the root volume, and we don\u0027t have any changes to the server, which likely means _error_out_instance_on_exception needs to be handled differently - maybe we need to raise InstanceFaultRollback in that case but the problem is _error_out_instance_on_exception  sets the vm_state to ACTIVE unconditionally in that case, which is maybe a bug (it doesn\u0027t use the instance_state parameter). Anyway, the point is, if we are rebuilding an ACTIVE server and we didn\u0027t change the root volume, we shouldn\u0027t set the instance to ERROR state.\n\nThis is covered in the last paragraph of https://specs.openstack.org/openstack/nova-specs/specs/stein/approved/volume-backed-server-rebuild.html#proposed-change.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":2902,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2903,"context_line":"        else:"},{"line_number":2904,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2905,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2906,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_a52121a2","line":2905,"updated":"2018-12-29 02:30:47.000000000","message":"detach_block_devices will call attachment_create, So after this the volume is changed to `reserved`, In L2917, we will reimage a **reserved** volume","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":2906,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2907,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2908,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2909,"context_line":"            # (lijie) We need to get the root block device mapping information"},{"line_number":2910,"context_line":"            # so that we can reimage the root volume."},{"line_number":2911,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2912,"context_line":"            if root_bdm and root_bdm.is_volume:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_c50d3d38","line":2909,"range":{"start_line":2909,"start_character":14,"end_line":2909,"end_character":21},"updated":"2018-12-29 02:30:47.000000000","message":"NOTE(lijie):","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":2909,"context_line":"            # (lijie) We need to get the root block device mapping information"},{"line_number":2910,"context_line":"            # so that we can reimage the root volume."},{"line_number":2911,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2912,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2913,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2914,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2915,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_05525514","line":2912,"updated":"2018-12-29 02:30:47.000000000","message":"Whats happen if the volume is a multi-attach volume? Note that the cinder will forbid to reimage a multi-attach volume\n\n[1] https://review.openstack.org/#/c/606346/22/cinder/volume/api.py@2243","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"cf8fbe0117359df60abb2389652a55f10ba73b0f","unresolved":false,"context_lines":[{"line_number":2909,"context_line":"            # (lijie) We need to get the root block device mapping information"},{"line_number":2910,"context_line":"            # so that we can reimage the root volume."},{"line_number":2911,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2912,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2913,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2914,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2915,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_a1558752","line":2912,"in_reply_to":"1f769fc5_05525514","updated":"2019-01-02 03:55:26.000000000","message":"Isn\u0027t  the Cinder api effect to check the volume status and if is a multi-attach volume？The cinder reimage api will check this, do we need to check this in Nova？","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2914,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2915,"context_line":"                try:"},{"line_number":2916,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2917,"context_line":"                                                   image_id)"},{"line_number":2918,"context_line":"                except Exception:"},{"line_number":2919,"context_line":"                    LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":2920,"context_line":"                                  instance_uuid\u003dinstance.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_c55bfd2b","line":2917,"range":{"start_line":2916,"start_character":50,"end_line":2917,"end_character":60},"updated":"2018-12-29 02:30:47.000000000","message":"After 2905, the volume is set to reserved, we should add ``ignore_reserved\u003dTrue``, right?","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":2916,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2917,"context_line":"                                                   image_id)"},{"line_number":2918,"context_line":"                except Exception:"},{"line_number":2919,"context_line":"                    LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":2920,"context_line":"                                  instance_uuid\u003dinstance.id)"},{"line_number":2921,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":2922,"context_line":"                        self._set_instance_obj_error_state(context, instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_251c3169","line":2919,"range":{"start_line":2919,"start_character":35,"end_line":2919,"end_character":69},"updated":"2018-12-29 02:30:47.000000000","message":"it\u0027s better to mention something like:\n\nFailed to reimage volume %(volume_id)s with image %(image_id)%, setting instance vm_state to ERROR","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"ddd0bcdf1cad1d05d2aa5a70923999e9fe1019cb","unresolved":false,"context_lines":[{"line_number":2916,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2917,"context_line":"                                                   image_id)"},{"line_number":2918,"context_line":"                except Exception:"},{"line_number":2919,"context_line":"                    LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":2920,"context_line":"                                  instance_uuid\u003dinstance.id)"},{"line_number":2921,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":2922,"context_line":"                        self._set_instance_obj_error_state(context, instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_7c7dd2af","line":2919,"range":{"start_line":2919,"start_character":35,"end_line":2919,"end_character":69},"in_reply_to":"1f769fc5_251c3169","updated":"2019-01-02 07:40:05.000000000","message":"Done.","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"63fd6de85554d7848d9dbfadd857c7327634cccf","unresolved":false,"context_lines":[{"line_number":99,"context_line":"from nova.virt import virtapi"},{"line_number":100,"context_line":"from nova.volume import cinder"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_b7706574","line":102,"updated":"2019-01-02 08:17:00.000000000","message":"extra space","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"63fd6de85554d7848d9dbfadd857c7327634cccf","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"            # NOTE(lijie): We need to get the root block device mapping information"},{"line_number":2911,"context_line":"            # so that we can reimage the root volume."},{"line_number":2912,"context_line":"            root_bdm \u003d block_device.get_root_bdm(bdms)"},{"line_number":2913,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2914,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2915,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2916,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_d7dc0148","line":2913,"range":{"start_line":2913,"start_character":12,"end_line":2913,"end_character":23},"updated":"2019-01-02 08:17:00.000000000","message":"I guess there will always be a root_bdm? but nevermind.","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"63fd6de85554d7848d9dbfadd857c7327634cccf","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2914,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2915,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2916,"context_line":"                try:"},{"line_number":2917,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2918,"context_line":"                                                   image_id, ignore_reserved\u003dTrue)"},{"line_number":2919,"context_line":"                except Exception:"},{"line_number":2920,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2921,"context_line":"                                  \u0027image %(image_id)%, setting instance vm_state\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_97e68916","line":2918,"range":{"start_line":2916,"start_character":16,"end_line":2918,"end_character":82},"updated":"2019-01-02 08:17:00.000000000","message":"do we need to check whether this method is existed? or you are doing it in API layer.","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"65baf5f6f0ab6cb86c7a22a4cc7b201a9fc09bb2","unresolved":false,"context_lines":[{"line_number":2913,"context_line":"            if root_bdm and root_bdm.is_volume:"},{"line_number":2914,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2915,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2916,"context_line":"                try:"},{"line_number":2917,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2918,"context_line":"                                                   image_id, ignore_reserved\u003dTrue)"},{"line_number":2919,"context_line":"                except Exception:"},{"line_number":2920,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2921,"context_line":"                                  \u0027image %(image_id)%, setting instance vm_state\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffd0ebdf_c6c5625d","line":2918,"range":{"start_line":2916,"start_character":16,"end_line":2918,"end_character":82},"in_reply_to":"1f769fc5_97e68916","updated":"2019-01-03 07:59:04.000000000","message":"We can check the cinder microversion in API layer.\nhttps://review.openstack.org/#/c/627518/10/nova/compute/api.py","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":3015,"context_line":"                                  self.host)"},{"line_number":3016,"context_line":"            else:"},{"line_number":3017,"context_line":"                scheduled_node \u003d instance.node"},{"line_number":3018,"context_line":""},{"line_number":3019,"context_line":"        with self._error_out_instance_on_exception(context, instance):"},{"line_number":3020,"context_line":"            try:"},{"line_number":3021,"context_line":"                claim_ctxt \u003d rebuild_claim("}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_4334f94a","side":"PARENT","line":3018,"updated":"2019-01-03 17:00:32.000000000","message":"Undo this unrelated change.","commit_id":"8ef3d253a086e4f8575f5221d4515cda421abea2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":2908,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2909,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2910,"context_line":"                try:"},{"line_number":2911,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_c37549fc","line":2911,"updated":"2019-01-03 17:00:32.000000000","message":"We need to poll the volume status until the reimage completes as mentioned before:\n\nhttps://review.openstack.org/#/c/625893/1/nova/compute/manager.py@2914\n\nYou could probably do something like _await_block_device_map_created (re-use those same config options) but the status checking would have to be different.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4cffed8f4a9bbfb0cdf960932c0d5e5bb647d933","unresolved":false,"context_lines":[{"line_number":2908,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2909,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2910,"context_line":"                try:"},{"line_number":2911,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_1d4c06c6","line":2911,"in_reply_to":"ffd0ebdf_c37549fc","updated":"2019-01-04 07:03:16.000000000","message":"Yeah good point","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":2910,"context_line":"                try:"},{"line_number":2911,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"},{"line_number":2915,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2916,"context_line":"                                  \u0027image %(image_id)%, setting instance\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_a31845d3","line":2913,"range":{"start_line":2913,"start_character":51,"end_line":2913,"end_character":71},"updated":"2019-01-03 17:00:32.000000000","message":"Should add a comment about why we pass ignore_reserved\u003dTrue here","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"},{"line_number":2915,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2916,"context_line":"                                  \u0027image %(image_id)%, setting instance\u0027"},{"line_number":2917,"context_line":"                                  \u0027vm_state to ERROR\u0027,"},{"line_number":2918,"context_line":"                                  instance_uuid\u003dinstance.id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_9e031a0e","line":2915,"updated":"2019-01-03 17:00:32.000000000","message":"Your exception message is missing the volume_id and image_id variables - so you don\u0027t have test coverage for this error case.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"2b28fc0588a706662052114bb456cc708a5cc4eb","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"},{"line_number":2915,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2916,"context_line":"                                  \u0027image %(image_id)%, setting instance\u0027"},{"line_number":2917,"context_line":"                                  \u0027vm_state to ERROR\u0027,"},{"line_number":2918,"context_line":"                                  instance_uuid\u003dinstance.id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfd5e7cf_bc837104","line":2915,"in_reply_to":"ffd0ebdf_9e031a0e","updated":"2019-01-08 14:50:18.000000000","message":"Oh, sorry about this.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"},{"line_number":2915,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2916,"context_line":"                                  \u0027image %(image_id)%, setting instance\u0027"},{"line_number":2917,"context_line":"                                  \u0027vm_state to ERROR\u0027,"},{"line_number":2918,"context_line":"                                  instance_uuid\u003dinstance.id)"},{"line_number":2919,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":2920,"context_line":"                        self._set_instance_obj_error_state(context, instance)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        instance.task_state \u003d task_states.REBUILD_BLOCK_DEVICE_MAPPING"},{"line_number":2923,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILDING])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_0324b1c5","line":2920,"range":{"start_line":2915,"start_character":20,"end_line":2920,"end_character":77},"updated":"2019-01-03 17:00:32.000000000","message":"I mentioned this before and this is still wrong:\n\nhttps://review.openstack.org/#/c/625893/1/nova/compute/manager.py@2920\n\nIf the API request to cinder fails, we didn\u0027t actually change anything about the root volume.\n\nBut in thinking about this again, if we get this far, the API has changed information about the server based on the new image:\n\nhttps://github.com/openstack/nova/blob/8ef3d253a086e4f8575f5221d4515cda421abea2/nova/compute/api.py#L3335\n\nAnd leaving an ACTIVE instance as ACTIVE in that case is probably wrong, so it might be OK to fail and set the instance to ERROR state if the reimage fails. In that case, you don\u0027t need to explicitly call _set_instance_obj_error_state because _error_out_instance_on_exception on L3035 should handle that for us.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"2b28fc0588a706662052114bb456cc708a5cc4eb","unresolved":false,"context_lines":[{"line_number":2912,"context_line":"                                                   image_id,"},{"line_number":2913,"context_line":"                                                   ignore_reserved\u003dTrue)"},{"line_number":2914,"context_line":"                except Exception:"},{"line_number":2915,"context_line":"                    LOG.exception(\u0027Failed to reimage volume %(volume_id)s with\u0027"},{"line_number":2916,"context_line":"                                  \u0027image %(image_id)%, setting instance\u0027"},{"line_number":2917,"context_line":"                                  \u0027vm_state to ERROR\u0027,"},{"line_number":2918,"context_line":"                                  instance_uuid\u003dinstance.id)"},{"line_number":2919,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":2920,"context_line":"                        self._set_instance_obj_error_state(context, instance)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        instance.task_state \u003d task_states.REBUILD_BLOCK_DEVICE_MAPPING"},{"line_number":2923,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILDING])"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfd5e7cf_9c91cd55","line":2920,"range":{"start_line":2915,"start_character":20,"end_line":2920,"end_character":77},"in_reply_to":"ffd0ebdf_0324b1c5","updated":"2019-01-08 14:50:18.000000000","message":"Yeah, you are right.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":7921,"context_line":"                                  vm_state\u003dvm_states.ACTIVE,"},{"line_number":7922,"context_line":"                                  task_state\u003dNone)"},{"line_number":7923,"context_line":"            raise error.inner_exception"},{"line_number":7924,"context_line":"        except cinder_exception.ClientException:"},{"line_number":7925,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7926,"context_line":"                          instance_uuid\u003dinstance_uuid)"},{"line_number":7927,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":7928,"context_line":"                self._set_instance_obj_error_state(context, instance)"},{"line_number":7929,"context_line":"        except Exception:"},{"line_number":7930,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7931,"context_line":"                          instance_uuid\u003dinstance_uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_a37da5e8","line":7928,"range":{"start_line":7924,"start_character":8,"end_line":7928,"end_character":69},"updated":"2019-01-03 17:00:32.000000000","message":"This isn\u0027t the correct place for this. This is also the exact same handling as the generic Exception block below, where a clientclient exception would be handled anyway.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4cffed8f4a9bbfb0cdf960932c0d5e5bb647d933","unresolved":false,"context_lines":[{"line_number":7921,"context_line":"                                  vm_state\u003dvm_states.ACTIVE,"},{"line_number":7922,"context_line":"                                  task_state\u003dNone)"},{"line_number":7923,"context_line":"            raise error.inner_exception"},{"line_number":7924,"context_line":"        except cinder_exception.ClientException:"},{"line_number":7925,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7926,"context_line":"                          instance_uuid\u003dinstance_uuid)"},{"line_number":7927,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":7928,"context_line":"                self._set_instance_obj_error_state(context, instance)"},{"line_number":7929,"context_line":"        except Exception:"},{"line_number":7930,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7931,"context_line":"                          instance_uuid\u003dinstance_uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_5dd7eec0","line":7928,"range":{"start_line":7924,"start_character":8,"end_line":7928,"end_character":69},"in_reply_to":"ffd0ebdf_a37da5e8","updated":"2019-01-04 07:03:16.000000000","message":"+1","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"2b28fc0588a706662052114bb456cc708a5cc4eb","unresolved":false,"context_lines":[{"line_number":7921,"context_line":"                                  vm_state\u003dvm_states.ACTIVE,"},{"line_number":7922,"context_line":"                                  task_state\u003dNone)"},{"line_number":7923,"context_line":"            raise error.inner_exception"},{"line_number":7924,"context_line":"        except cinder_exception.ClientException:"},{"line_number":7925,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7926,"context_line":"                          instance_uuid\u003dinstance_uuid)"},{"line_number":7927,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":7928,"context_line":"                self._set_instance_obj_error_state(context, instance)"},{"line_number":7929,"context_line":"        except Exception:"},{"line_number":7930,"context_line":"            LOG.exception(\u0027Setting instance vm_state to ERROR\u0027,"},{"line_number":7931,"context_line":"                          instance_uuid\u003dinstance_uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfd5e7cf_fc05797b","line":7928,"range":{"start_line":7924,"start_character":8,"end_line":7928,"end_character":69},"in_reply_to":"ffd0ebdf_a37da5e8","updated":"2019-01-08 14:50:18.000000000","message":"Deleted it.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1f5b2b9617dfafd6f219ddc304b54940101e8b1c","unresolved":false,"context_lines":[{"line_number":2974,"context_line":"        # is simpler than renaming a parameter in an RPC versioned method."},{"line_number":2975,"context_line":"        evacuate \u003d recreate"},{"line_number":2976,"context_line":"        context \u003d context.elevated()"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"        if evacuate:"},{"line_number":2979,"context_line":"            LOG.info(\"Evacuating instance\", instance\u003dinstance)"},{"line_number":2980,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_20d8817d","side":"PARENT","line":2977,"updated":"2019-01-10 09:22:46.000000000","message":"unrelated change","commit_id":"8ef3d253a086e4f8575f5221d4515cda421abea2"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1f5b2b9617dfafd6f219ddc304b54940101e8b1c","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"                                         attempts\u003dattempt,"},{"line_number":1342,"context_line":"                                         volume_status\u003dvolume_status)"},{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"    def _await_volume_reimage_completed(self, context, vol_id):"},{"line_number":1345,"context_line":"        # Note(lijie): We need to poll the volume status until the reimage"},{"line_number":1346,"context_line":"        # completed when we rebuild the volume-backed-server."},{"line_number":1347,"context_line":"        start \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_40b6e5fc","line":1344,"range":{"start_line":1344,"start_character":4,"end_line":1344,"end_character":63},"updated":"2019-01-10 09:22:46.000000000","message":"should we add some test for this one? I saw some for the create one.","commit_id":"888b4a1f184f8d06b2efafd7a24b5d57bbc2b782"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"05b78f6827df36bd29a88703484cb8d6ca2e39c6","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2944,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2945,"context_line":"                try:"},{"line_number":2946,"context_line":"                    # When the volume is set to reserved, we should set"},{"line_number":2947,"context_line":"                    # the param ignore_reserved to True for support reimage"},{"line_number":2948,"context_line":"                    # the root volume."},{"line_number":2949,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2950,"context_line":"                                                   image_id,"},{"line_number":2951,"context_line":"                                                   ignore_reserved\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_075b0c2e","line":2948,"range":{"start_line":2946,"start_character":20,"end_line":2948,"end_character":38},"updated":"2019-01-16 07:12:34.000000000","message":"why it wil be in reserved status? Because the behavior of detach_block_devices()?, Maybe we should be more clear about it here.","commit_id":"d8119098720203208aff83d3d6e62de7adfcf6b6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbdf038b8b1d97e6eff45989a17afb42df98ea7b","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2944,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2945,"context_line":"                try:"},{"line_number":2946,"context_line":"                    # When the volume is set to reserved, we should set"},{"line_number":2947,"context_line":"                    # the param ignore_reserved to True for support reimage"},{"line_number":2948,"context_line":"                    # the root volume."},{"line_number":2949,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2950,"context_line":"                                                   image_id,"},{"line_number":2951,"context_line":"                                                   ignore_reserved\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_656ab7ed","line":2948,"range":{"start_line":2946,"start_character":20,"end_line":2948,"end_character":38},"in_reply_to":"9fdfeff1_675b4887","updated":"2019-01-30 15:34:10.000000000","message":"\u003e yeah, you are right, the result is when nova creates a volume\n \u003e during boot\n \u003e from volume for a source_type\u003dblank/image/snapshot BDM, we won\u0027t\n \u003e have an attachment_id for that volume so the volume won\u0027t be\n \u003e reserved.\n \u003e https://review.openstack.org/#/c/525787/\n\nI have a fix for that here:\n\nhttps://review.openstack.org/#/c/541420/\n\nBut that won\u0027t apply to older volumes created that way which are not yet migrated...","commit_id":"d8119098720203208aff83d3d6e62de7adfcf6b6"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"5dcc80cfe69aed44efcba92d6f3a7b4d9d26945c","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                volume_id \u003d root_bdm.volume_id"},{"line_number":2944,"context_line":"                image_id \u003d image_meta.id"},{"line_number":2945,"context_line":"                try:"},{"line_number":2946,"context_line":"                    # When the volume is set to reserved, we should set"},{"line_number":2947,"context_line":"                    # the param ignore_reserved to True for support reimage"},{"line_number":2948,"context_line":"                    # the root volume."},{"line_number":2949,"context_line":"                    self.volume_api.reimage_volume(context, volume_id,"},{"line_number":2950,"context_line":"                                                   image_id,"},{"line_number":2951,"context_line":"                                                   ignore_reserved\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_675b4887","line":2948,"range":{"start_line":2946,"start_character":20,"end_line":2948,"end_character":38},"in_reply_to":"bfdaf3ff_075b0c2e","updated":"2019-01-21 07:34:30.000000000","message":"yeah, you are right, the result is when nova creates a volume during boot\nfrom volume for a source_type\u003dblank/image/snapshot BDM, we won\u0027t\nhave an attachment_id for that volume so the volume won\u0027t be reserved.\nhttps://review.openstack.org/#/c/525787/","commit_id":"d8119098720203208aff83d3d6e62de7adfcf6b6"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":769,"context_line":"                    \u0027scheduled_node\u0027: node,"},{"line_number":770,"context_line":"                    \u0027limits\u0027: limits,"},{"line_number":771,"context_line":"                    \u0027request_spec\u0027: request_spec}"},{"line_number":772,"context_line":"        version \u003d \u00275.1\u0027"},{"line_number":773,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":774,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(host, instance),"},{"line_number":775,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_530afe1e","line":772,"updated":"2018-12-18 15:58:50.000000000","message":"Do we need a version check in here and fail if the compute can\u0027t support it? For example of the compute service is running Rocky level code. Sort of like this:\n\nhttps://github.com/openstack/nova/blob/stable/queens/nova/compute/rpcapi.py#L1039\n\nObviously we would only want to send 5.1 if we\u0027re rebuilding a volume-backed server with a new image, otherwise it\u0027s OK to send 5.0 to old (Rocky) computes. This might require passing a new parameter from the API to this method in the RPC client.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"5ae75dac985c70539396b1241a154bc1af62d597","unresolved":false,"context_lines":[{"line_number":769,"context_line":"                    \u0027scheduled_node\u0027: node,"},{"line_number":770,"context_line":"                    \u0027limits\u0027: limits,"},{"line_number":771,"context_line":"                    \u0027request_spec\u0027: request_spec}"},{"line_number":772,"context_line":"        version \u003d \u00275.1\u0027"},{"line_number":773,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":774,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(host, instance),"},{"line_number":775,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_ee03900c","line":772,"in_reply_to":"3f79a3b5_530afe1e","updated":"2018-12-26 02:44:17.000000000","message":"Maybe we shouldn\u0027t limit the image, so we don\u0027t have to add a new parameter.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"}],"nova/objects/service.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    # type when booting a volume-backed server."},{"line_number":151,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":152,"context_line":"    {\u0027compute_rpc\u0027: \u00275.1\u0027},"},{"line_number":153,"context_line":"    # Version 37: Compute RPC version 5.1"},{"line_number":154,"context_line":")"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_38f88117","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":41},"updated":"2018-12-18 15:58:50.000000000","message":"This comment should go above the new entry.","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Version 36: Indicates that nova-compute supports specifying volume"},{"line_number":150,"context_line":"    # type when booting a volume-backed server."},{"line_number":151,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":152,"context_line":"    # Version 37: Add support for volume-backed server."},{"line_number":153,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":154,"context_line":")"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_4547ed4c","line":152,"range":{"start_line":152,"start_character":34,"end_line":152,"end_character":55},"updated":"2018-12-29 02:30:47.000000000","message":"emm, it seems we missed some description, maybe something like\n\nIndicates that nova-compute supports rebuilding the volume backed server with new image.","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"ddd0bcdf1cad1d05d2aa5a70923999e9fe1019cb","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Version 36: Indicates that nova-compute supports specifying volume"},{"line_number":150,"context_line":"    # type when booting a volume-backed server."},{"line_number":151,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":152,"context_line":"    # Version 37: Add support for volume-backed server."},{"line_number":153,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":154,"context_line":")"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_5c59f657","line":152,"range":{"start_line":152,"start_character":34,"end_line":152,"end_character":55},"in_reply_to":"1f769fc5_4547ed4c","updated":"2019-01-02 07:40:05.000000000","message":"Done.","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1f5b2b9617dfafd6f219ddc304b54940101e8b1c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    # type when booting a volume-backed server."},{"line_number":151,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":152,"context_line":"    # Version 37: Indicates that nova-compute supports rebuilding the volume"},{"line_number":153,"context_line":"    # backed server with new image."},{"line_number":154,"context_line":"    {\u0027compute_rpc\u0027: \u00275.0\u0027},"},{"line_number":155,"context_line":")"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_e04fd931","line":153,"range":{"start_line":153,"start_character":25,"end_line":153,"end_character":34},"updated":"2019-01-10 09:22:46.000000000","message":"new image seems useless here.","commit_id":"888b4a1f184f8d06b2efafd7a24b5d57bbc2b782"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"63fd6de85554d7848d9dbfadd857c7327634cccf","unresolved":false,"context_lines":[{"line_number":4467,"context_line":"                    image_id\u003duuids.image_1, connection_info\u003dNone))"},{"line_number":4468,"context_line":"            return fake_bdm"},{"line_number":4469,"context_line":""},{"line_number":4470,"context_line":"        # def fake_vol_reimage(context, volume_id, image_id):"},{"line_number":4471,"context_line":"        #     pass"},{"line_number":4472,"context_line":""},{"line_number":4473,"context_line":"        with test.nested("},{"line_number":4474,"context_line":"            mock.patch.object(self.compute.driver, \u0027destroy\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f769fc5_d7aac183","line":4471,"range":{"start_line":4470,"start_character":8,"end_line":4471,"end_character":18},"updated":"2019-01-02 08:17:00.000000000","message":"I don\u0027t think we should put these here.","commit_id":"8be79b7d31396db4bf987301f68201a8bce4094a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":4456,"context_line":"            self.assertEqual(block_device_info[\u0027block_device_mapping\u0027],"},{"line_number":4457,"context_line":"                             \u0027shared_block_storage\u0027)"},{"line_number":4458,"context_line":""},{"line_number":4459,"context_line":"        def fake_root_bdm():"},{"line_number":4460,"context_line":"            fake_bdm \u003d fake_block_device.fake_bdm_object("},{"line_number":4461,"context_line":"                self.context,"},{"line_number":4462,"context_line":"                fake_block_device.FakeDbBlockDeviceDict("}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_7e2756b8","line":4459,"range":{"start_line":4459,"start_character":12,"end_line":4459,"end_character":25},"updated":"2019-01-03 17:00:32.000000000","message":"nit: you don\u0027t really need a special function for this since it\u0027s not being used to mock any method calls.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":4492,"context_line":"            instance.device_metadata \u003d None"},{"line_number":4493,"context_line":"            instance.task_state \u003d task_states.REBUILDING"},{"line_number":4494,"context_line":"            instance.save(expected_task_state\u003d[task_states.REBUILDING])"},{"line_number":4495,"context_line":"            root_bdm \u003d fake_root_bdm()"},{"line_number":4496,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":4497,"context_line":"                {\u0027id\u0027: uuids.image_1,"},{"line_number":4498,"context_line":"                 \u0027size\u0027: 1})"},{"line_number":4499,"context_line":"            self.compute._rebuild_default_impl(self.context,"},{"line_number":4500,"context_line":"                                               instance,"},{"line_number":4501,"context_line":"                                               image_meta,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_3e56ae08","line":4498,"range":{"start_line":4495,"start_character":12,"end_line":4498,"end_character":28},"updated":"2019-01-03 17:00:32.000000000","message":"This should be conditional on volume_backed because you\u0027re changing the behavior of this test for the non-volume-backed case as well and effectively making it volume-backed. It doesn\u0027t fail because you\u0027re not asserting that mock_vol_reimage is not called if volume_backed\u003dFalse (but you should).","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":4517,"context_line":"                network_info\u003dNone, block_device_info\u003dNone)"},{"line_number":4518,"context_line":"            mock_power_off.assert_called_once_with("},{"line_number":4519,"context_line":"                self.context, instance, clean_shutdown\u003dTrue)"},{"line_number":4520,"context_line":"            if volume_backed:"},{"line_number":4521,"context_line":"                mock_vol_reimage.assert_called_once_with(self.context,"},{"line_number":4522,"context_line":"                                                         uuids.volume_1,"},{"line_number":4523,"context_line":"                                                         uuids.image_1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_5e5b722d","line":4520,"updated":"2019-01-03 17:00:32.000000000","message":"See above, but you should have an else block to assert that mock_vol_reimage is not called.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":4518,"context_line":"            mock_power_off.assert_called_once_with("},{"line_number":4519,"context_line":"                self.context, instance, clean_shutdown\u003dTrue)"},{"line_number":4520,"context_line":"            if volume_backed:"},{"line_number":4521,"context_line":"                mock_vol_reimage.assert_called_once_with(self.context,"},{"line_number":4522,"context_line":"                                                         uuids.volume_1,"},{"line_number":4523,"context_line":"                                                         uuids.image_1)"},{"line_number":4524,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_a3a5a5b7","line":4521,"updated":"2019-01-03 17:00:32.000000000","message":"Missing ignore_reserved\u003dTrue in the assertion.","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1f5b2b9617dfafd6f219ddc304b54940101e8b1c","unresolved":false,"context_lines":[{"line_number":4486,"context_line":"            instance.save(expected_task_state\u003d[task_states.REBUILDING])"},{"line_number":4487,"context_line":"            image_meta \u003d None"},{"line_number":4488,"context_line":"            root_bdm \u003d None"},{"line_number":4489,"context_line":"            mock_is_volume_backed_instance.return_value \u003d False"},{"line_number":4490,"context_line":"            if volume_backed:"},{"line_number":4491,"context_line":"                mock_is_volume_backed_instance.return_value \u003d True"},{"line_number":4492,"context_line":"                root_bdm \u003d fake_block_device.fake_bdm_object("}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_a0d6b126","line":4489,"range":{"start_line":4489,"start_character":12,"end_line":4489,"end_character":63},"updated":"2019-01-10 09:22:46.000000000","message":"redundante with ln 4463, mabye delete this one.","commit_id":"888b4a1f184f8d06b2efafd7a24b5d57bbc2b782"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1f5b2b9617dfafd6f219ddc304b54940101e8b1c","unresolved":false,"context_lines":[{"line_number":4498,"context_line":"                        volume_id\u003duuids.volume_1, volume_size\u003d10,"},{"line_number":4499,"context_line":"                        image_id\u003duuids.image_1, connection_info\u003dNone))"},{"line_number":4500,"context_line":"                image_meta \u003d objects.ImageMeta.from_dict("},{"line_number":4501,"context_line":"                    {\u0027id\u0027: uuids.image_1,"},{"line_number":4502,"context_line":"                     \u0027size\u0027: 1})"},{"line_number":4503,"context_line":"            self.compute._rebuild_default_impl(self.context,"},{"line_number":4504,"context_line":"                                               instance,"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_c0f095cc","line":4501,"range":{"start_line":4501,"start_character":27,"end_line":4501,"end_character":41},"updated":"2019-01-10 09:22:46.000000000","message":"this is the same image with the volume, mabye use a new one for clear sample?","commit_id":"888b4a1f184f8d06b2efafd7a24b5d57bbc2b782"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"05b78f6827df36bd29a88703484cb8d6ca2e39c6","unresolved":false,"context_lines":[{"line_number":4439,"context_line":"                                                    mock.ANY, mock.ANY)"},{"line_number":4440,"context_line":"            mock_get_nw_info.assert_called_once_with(self.context, instance)"},{"line_number":4441,"context_line":""},{"line_number":4442,"context_line":"    def rebuild_default_impl(self, volume_backed\u003dFalse):"},{"line_number":4443,"context_line":"        def _detach(context, bdms):"},{"line_number":4444,"context_line":"            # NOTE(rpodolyaka): check that instance has been powered off by"},{"line_number":4445,"context_line":"            # the time we detach block devices, exact calls arguments will be"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_87b4dc36","line":4442,"range":{"start_line":4442,"start_character":8,"end_line":4442,"end_character":28},"updated":"2019-01-16 07:12:34.000000000","message":"shoulde be private","commit_id":"d8119098720203208aff83d3d6e62de7adfcf6b6"}],"nova/volume/cinder.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94225db3c336fb1ebd9089a7233522c2da451e8e","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    @translate_volume_exception"},{"line_number":530,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":531,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":532,"context_line":"        cinderclient(context, microversion\u003d\u00273.56\u0027).volumes.reimage("},{"line_number":533,"context_line":"            volume_id,"},{"line_number":534,"context_line":"            image_id,"},{"line_number":535,"context_line":"            ignore_reserved)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d8114d61","line":532,"updated":"2018-12-18 15:58:50.000000000","message":"Doesn\u0027t this nova change need to depend on https://review.openstack.org/#/c/622614/ ?","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cdb438883c510e6925e3ba754dac271937eb35","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    @translate_volume_exception"},{"line_number":530,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":531,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":532,"context_line":"        cinderclient(context, microversion\u003d\u00273.56\u0027).volumes.reimage("},{"line_number":533,"context_line":"            volume_id,"},{"line_number":534,"context_line":"            image_id,"},{"line_number":535,"context_line":"            ignore_reserved)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c5186121","line":532,"in_reply_to":"3f79a3b5_25c4b592","updated":"2018-12-20 01:51:26.000000000","message":"https://docs.openstack.org/infra/manual/developers.html#cross-repository-dependencies","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0181bf71ca49cfe5499fb9e4ea6370de032d68ab","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    @translate_volume_exception"},{"line_number":530,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":531,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":532,"context_line":"        cinderclient(context, microversion\u003d\u00273.56\u0027).volumes.reimage("},{"line_number":533,"context_line":"            volume_id,"},{"line_number":534,"context_line":"            image_id,"},{"line_number":535,"context_line":"            ignore_reserved)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_25c4b592","line":532,"in_reply_to":"3f79a3b5_566bc253","updated":"2018-12-20 01:50:05.000000000","message":"Add this on a separate line to the commit message:\n\nDepends-On: https://review.openstack.org/#/c/622614/","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":27594,"name":"Jie Li","email":"lijie@unitedstack.com","username":"ramboman"},"change_message_id":"7764e32adedd80f4316861d08f86591aebef934b","unresolved":false,"context_lines":[{"line_number":529,"context_line":"    @translate_volume_exception"},{"line_number":530,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":531,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":532,"context_line":"        cinderclient(context, microversion\u003d\u00273.56\u0027).volumes.reimage("},{"line_number":533,"context_line":"            volume_id,"},{"line_number":534,"context_line":"            image_id,"},{"line_number":535,"context_line":"            ignore_reserved)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_566bc253","line":532,"in_reply_to":"3f79a3b5_d8114d61","updated":"2018-12-19 01:15:19.000000000","message":"Oh, this exactly depend on this cinder patch. But I don\u0027t know how to do about this, Can you give me some advice?","commit_id":"717bbb95e496902679ecf3c230e4d343ea2ca78f"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fd11177584500f789886b2287e39bb76d6bbc47c","unresolved":false,"context_lines":[{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    @translate_volume_exception"},{"line_number":530,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":531,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":532,"context_line":"        cinderclient(context).volumes.reimage("},{"line_number":533,"context_line":"            volume_id,"},{"line_number":534,"context_line":"            image_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f769fc5_6569c9bc","line":531,"range":{"start_line":531,"start_character":39,"end_line":531,"end_character":44},"updated":"2018-12-29 02:30:47.000000000","message":"If we always set this ignore_reserved\u003dTrue when reimage a volume in Nova, should we change the ignore_reserved to True directly?\n\nI\u0027m not sure, let\u0027s see other idea?\n\nBut I prefer keep this, and set ignore_reserved\u003dTrue explicitly when we call this method.","commit_id":"93f97a473bfe0d0f845aa84a0e5145b7c7830487"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3f97e9c23abde6b44f9a54e714a0d8468c609541","unresolved":false,"context_lines":[{"line_number":531,"context_line":"    @translate_volume_exception"},{"line_number":532,"context_line":"    def reimage_volume(self, context, volume_id, image_id,"},{"line_number":533,"context_line":"                       ignore_reserved\u003dFalse):"},{"line_number":534,"context_line":"        cinderclient(context).volumes.reimage("},{"line_number":535,"context_line":"            volume_id,"},{"line_number":536,"context_line":"            image_id,"},{"line_number":537,"context_line":"            ignore_reserved)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffd0ebdf_3e6f8ec6","line":534,"range":{"start_line":534,"start_character":8,"end_line":534,"end_character":29},"updated":"2019-01-03 17:00:32.000000000","message":"You need to pass the specific microversion here - 3.57 at this point: https://review.openstack.org/#/c/606346/24/cinder/api/microversions.py","commit_id":"7e5e1a788e71ebbb3433b33de847843cf2c1b55a"}]}
