)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"fe4d9231426c0f5e6c45d77c4238de0821998edc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding volume operations for shelved instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Volume operations on an instance in the shelved state are similar to any"},{"line_number":10,"context_line":"other state when on the host. The operations can be enabled by allowing"},{"line_number":11,"context_line":"them at the compute API for this state."},{"line_number":12,"context_line":"This change is to put in place all the code change necessary to manage"},{"line_number":13,"context_line":"the attach and detach operations for instances which are in shelved and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba63e191_4b8f67cc","line":10,"updated":"2016-01-19 22:07:30.000000000","message":"It doesn\u0027t seem clear what you are making these changes for, i.e that attach and detach when the instance is shelved require actions on the Cinder side, but not actual detach/attach on the Nova side. It would be good to make this more explicit, I think.","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"bae227cad2d4c13587d3e31448adcd1b70444037","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding volume operations for shelved instances"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Volume operations on an instance in the shelved state are similar to any"},{"line_number":10,"context_line":"other state when on the host. The operations can be enabled by allowing"},{"line_number":11,"context_line":"them at the compute API for this state."},{"line_number":12,"context_line":"This change is to put in place all the code change necessary to manage"},{"line_number":13,"context_line":"the attach and detach operations for instances which are in shelved and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"9a68dd71_64d8a31e","line":10,"in_reply_to":"ba63e191_4b8f67cc","updated":"2016-01-20 15:15:49.000000000","message":"ok, I\u0027ll try to make the commit message clearer","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"}],"nova/compute/api.py":[{"author":{"_account_id":8662,"name":"Kyle L. Henderson","email":"kyleh@us.ibm.com","username":"kyleh"},"change_message_id":"f8b9d394c07d49f90872937a613c709754942451","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                       ram\u003d-instance_memory_mb)"},{"line_number":1722,"context_line":"        return quotas"},{"line_number":1723,"context_line":""},{"line_number":1724,"context_line":"    def _cleanup_volumes(self, bdms, instance, context):"},{"line_number":1725,"context_line":"        elevated \u003d context.elevated()"},{"line_number":1726,"context_line":"        for bdm in bdms:"},{"line_number":1727,"context_line":"            if bdm.is_volume:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_9fb614db","line":1724,"updated":"2016-01-12 19:28:54.000000000","message":"I think this method needs to be renamed or commented to reflect it\u0027s a case of abnormal cleanup of the volumes.  It\u0027s used when deleting the volumes and a volume connector can\u0027t be acquired (such as when the compute host is down.)  Maybe rename it to _cleanup_volumes_local(), or cleanup_volumes_no_connector()??\n\nA good comment would go a long way too, otherwise it seems like a \u0027normal\u0027 cleanup case.  ;-)","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"b382841aa7968f8c1a8443cf2f1070882b1ceffb","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"                       ram\u003d-instance_memory_mb)"},{"line_number":1722,"context_line":"        return quotas"},{"line_number":1723,"context_line":""},{"line_number":1724,"context_line":"    def _cleanup_volumes(self, bdms, instance, context):"},{"line_number":1725,"context_line":"        elevated \u003d context.elevated()"},{"line_number":1726,"context_line":"        for bdm in bdms:"},{"line_number":1727,"context_line":"            if bdm.is_volume:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_ca8fadca","line":1724,"in_reply_to":"da6ed579_9fb614db","updated":"2016-01-13 17:56:19.000000000","message":"Thanks for the review, I am going to change the name of the method adding a \"local\" prefix as this is a kind of convention used here","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"fe4d9231426c0f5e6c45d77c4238de0821998edc","unresolved":false,"context_lines":[{"line_number":1738,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":1739,"context_line":"                                                         bdm.volume_id,"},{"line_number":1740,"context_line":"                                                         connector)"},{"line_number":1741,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id)"},{"line_number":1742,"context_line":"                    if bdm.delete_on_termination:"},{"line_number":1743,"context_line":"                        self.volume_api.delete(context, bdm.volume_id)"},{"line_number":1744,"context_line":"                except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba63e191_c85b5df5","line":1741,"updated":"2016-01-19 22:07:30.000000000","message":"There is a patch in flight that will add the instance.uuid to the volume_api.detach call:\nhttps://review.openstack.org/#/c/193134/79/nova/compute/api.py\n\nI reckon this will cause a merge conflict for whichever patch gets merged 2nd.","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"bae227cad2d4c13587d3e31448adcd1b70444037","unresolved":false,"context_lines":[{"line_number":1738,"context_line":"                    self.volume_api.terminate_connection(context,"},{"line_number":1739,"context_line":"                                                         bdm.volume_id,"},{"line_number":1740,"context_line":"                                                         connector)"},{"line_number":1741,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id)"},{"line_number":1742,"context_line":"                    if bdm.delete_on_termination:"},{"line_number":1743,"context_line":"                        self.volume_api.delete(context, bdm.volume_id)"},{"line_number":1744,"context_line":"                except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_d0026d6f","line":1741,"in_reply_to":"ba63e191_c85b5df5","updated":"2016-01-20 15:15:49.000000000","message":"Yes thanks for the heads-up. I think that patch is going to merge sooner than mine then gerrit will inform me about the conflict and I\u0027ll fix it","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"fe4d9231426c0f5e6c45d77c4238de0821998edc","unresolved":false,"context_lines":[{"line_number":3066,"context_line":"        self.volume_api.check_detach(context, volume)"},{"line_number":3067,"context_line":"        self.volume_api.begin_detaching(context, volume[\u0027id\u0027])"},{"line_number":3068,"context_line":"        # If the instance is shelved offloaded we just need to cleanup volume"},{"line_number":3069,"context_line":"        # calling the volume api detach (and delete if the volume has"},{"line_number":3070,"context_line":"        # delete_on_termination option set) and delete the bdm record"},{"line_number":3071,"context_line":"        if instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED:"},{"line_number":3072,"context_line":"            bdms \u003d [objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba63e191_0bcbaf1f","line":3069,"updated":"2016-01-19 22:07:30.000000000","message":"You\u0027re actually calling volume_api.terminate_connection in _local_cleanup_bdm_volumes as well.\nSince we\u0027ve poor/non-existent documentation of the Cinder API here, I\u0027d prefer that were pointed out, since it is important to call both functions.","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"bae227cad2d4c13587d3e31448adcd1b70444037","unresolved":false,"context_lines":[{"line_number":3066,"context_line":"        self.volume_api.check_detach(context, volume)"},{"line_number":3067,"context_line":"        self.volume_api.begin_detaching(context, volume[\u0027id\u0027])"},{"line_number":3068,"context_line":"        # If the instance is shelved offloaded we just need to cleanup volume"},{"line_number":3069,"context_line":"        # calling the volume api detach (and delete if the volume has"},{"line_number":3070,"context_line":"        # delete_on_termination option set) and delete the bdm record"},{"line_number":3071,"context_line":"        if instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED:"},{"line_number":3072,"context_line":"            bdms \u003d [objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_70b0618c","line":3069,"in_reply_to":"ba63e191_0bcbaf1f","updated":"2016-01-20 15:15:49.000000000","message":"yes you are right  I\u0027ll amend the comment.\nA note on this point, we call the terminate_connection with a fake connector which makes the call quite useless, in my opinion as I stated here:\nhttps://review.openstack.org/257853","commit_id":"de23b617c1d9f3d73d5fc1863c820202a7cba7f3"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"304ad0f5e1e53da067a15352b14964d298b6427d","unresolved":false,"context_lines":[{"line_number":3001,"context_line":"        is_shelved_offloaded \u003d instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED"},{"line_number":3002,"context_line":"        volume_bdm \u003d self._create_volume_bdm("},{"line_number":3003,"context_line":"            context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3004,"context_line":"            device_type\u003ddevice_type, is_local_creation\u003dis_shelved_offloaded)"},{"line_number":3005,"context_line":"        try:"},{"line_number":3006,"context_line":"            volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":3007,"context_line":"            self.volume_api.check_attach(context, volume, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_941f495a","line":3004,"updated":"2016-02-01 12:28:38.000000000","message":"personally, I\u0027d rather have the shelf conditional logic up at this level. I don\u0027t like that _create_volumd_bdm is really now 2 completely unrelated functions that pivot on a parameter. That makes it less clear what\u0027s going on, and also makes testing a bit odd.","commit_id":"8e99d432b9a24babefcf9dc022ea421bcb24773b"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"5b5ee46d54f4e093947f38a4648459d768449b70","unresolved":false,"context_lines":[{"line_number":3001,"context_line":"        is_shelved_offloaded \u003d instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED"},{"line_number":3002,"context_line":"        volume_bdm \u003d self._create_volume_bdm("},{"line_number":3003,"context_line":"            context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":3004,"context_line":"            device_type\u003ddevice_type, is_local_creation\u003dis_shelved_offloaded)"},{"line_number":3005,"context_line":"        try:"},{"line_number":3006,"context_line":"            volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":3007,"context_line":"            self.volume_api.check_attach(context, volume, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_62b8bd75","line":3004,"in_reply_to":"7a5de9d1_941f495a","updated":"2016-02-01 16:52:21.000000000","message":"I see your point I\u0027ll submit a new patch with a clearer separation for the attach and detach operations for shelved_offloaded instances","commit_id":"8e99d432b9a24babefcf9dc022ea421bcb24773b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"304ad0f5e1e53da067a15352b14964d298b6427d","unresolved":false,"context_lines":[{"line_number":3031,"context_line":"    @check_instance_lock"},{"line_number":3032,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":3033,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"},{"line_number":3034,"context_line":"                                    vm_states.SOFT_DELETED])"},{"line_number":3035,"context_line":"    def attach_volume(self, context, instance, volume_id, device\u003dNone,"},{"line_number":3036,"context_line":"                       disk_bus\u003dNone, device_type\u003dNone):"},{"line_number":3037,"context_line":"        \"\"\"Attach an existing volume to an existing instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_144919d0","line":3034,"updated":"2016-02-01 12:28:38.000000000","message":"how do we ever get to _attach_volume? As we\u0027re not allowing shelved offloaded through to here.\n\nNever mind, I see it in the top patch.","commit_id":"8e99d432b9a24babefcf9dc022ea421bcb24773b"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"5b5ee46d54f4e093947f38a4648459d768449b70","unresolved":false,"context_lines":[{"line_number":3031,"context_line":"    @check_instance_lock"},{"line_number":3032,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.PAUSED,"},{"line_number":3033,"context_line":"                                    vm_states.STOPPED, vm_states.RESIZED,"},{"line_number":3034,"context_line":"                                    vm_states.SOFT_DELETED])"},{"line_number":3035,"context_line":"    def attach_volume(self, context, instance, volume_id, device\u003dNone,"},{"line_number":3036,"context_line":"                       disk_bus\u003dNone, device_type\u003dNone):"},{"line_number":3037,"context_line":"        \"\"\"Attach an existing volume to an existing instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_626f5dfc","line":3034,"in_reply_to":"7a5de9d1_144919d0","updated":"2016-02-01 16:52:21.000000000","message":"yes, as you said this patch is for adding the operations but the new API will be enabled with a different patch.","commit_id":"8e99d432b9a24babefcf9dc022ea421bcb24773b"},{"author":{"_account_id":20354,"name":"Shoham Peller","email":"shohamp@gmail.com","username":"shoham.peller"},"change_message_id":"9885ad4210a2e532a0bac84ac92fa65b70137513","unresolved":false,"context_lines":[{"line_number":2965,"context_line":""},{"line_number":2966,"context_line":"    def _create_volume_bdm(self, context, instance, device, volume_id,"},{"line_number":2967,"context_line":"                           disk_bus, device_type, is_local_creation\u003dFalse):"},{"line_number":2968,"context_line":"        volume_bdm \u003d None"},{"line_number":2969,"context_line":"        if is_local_creation:"},{"line_number":2970,"context_line":"            # when the creation is done locally we can\u0027t specify the device"},{"line_number":2971,"context_line":"            # name as we do not have a way to check that the name specified is"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a5de9d1_f770bcde","line":2968,"updated":"2016-02-02 14:16:03.000000000","message":"volume_bdm is re-assigned in any case. No need to initialize","commit_id":"6f07ea226e7f615e28036b3c2f49b4f838454b44"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"9d2996ca77c1ee772720bf68e53709de5144dafa","unresolved":false,"context_lines":[{"line_number":2965,"context_line":""},{"line_number":2966,"context_line":"    def _create_volume_bdm(self, context, instance, device, volume_id,"},{"line_number":2967,"context_line":"                           disk_bus, device_type, is_local_creation\u003dFalse):"},{"line_number":2968,"context_line":"        volume_bdm \u003d None"},{"line_number":2969,"context_line":"        if is_local_creation:"},{"line_number":2970,"context_line":"            # when the creation is done locally we can\u0027t specify the device"},{"line_number":2971,"context_line":"            # name as we do not have a way to check that the name specified is"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a5de9d1_11455d16","line":2968,"in_reply_to":"7a5de9d1_f770bcde","updated":"2016-02-02 16:04:00.000000000","message":"correct, I\u0027ll fix it","commit_id":"6f07ea226e7f615e28036b3c2f49b4f838454b44"},{"author":{"_account_id":20354,"name":"Shoham Peller","email":"shohamp@gmail.com","username":"shoham.peller"},"change_message_id":"9885ad4210a2e532a0bac84ac92fa65b70137513","unresolved":false,"context_lines":[{"line_number":2992,"context_line":"        return volume_bdm"},{"line_number":2993,"context_line":""},{"line_number":2994,"context_line":"    def _check_attach_and_reserve_volume(self, context, volume_id, instance):"},{"line_number":2995,"context_line":"        volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":2996,"context_line":"        self.volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":2997,"context_line":"        self.volume_api.reserve_volume(context, volume_id)"},{"line_number":2998,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a5de9d1_77028c0d","line":2995,"updated":"2016-02-02 14:16:03.000000000","message":"shadows \"from nova import volume\"","commit_id":"6f07ea226e7f615e28036b3c2f49b4f838454b44"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"9d2996ca77c1ee772720bf68e53709de5144dafa","unresolved":false,"context_lines":[{"line_number":2992,"context_line":"        return volume_bdm"},{"line_number":2993,"context_line":""},{"line_number":2994,"context_line":"    def _check_attach_and_reserve_volume(self, context, volume_id, instance):"},{"line_number":2995,"context_line":"        volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":2996,"context_line":"        self.volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":2997,"context_line":"        self.volume_api.reserve_volume(context, volume_id)"},{"line_number":2998,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a5de9d1_71c37139","line":2995,"in_reply_to":"7a5de9d1_77028c0d","updated":"2016-02-02 16:04:00.000000000","message":"yes you are right but in this method is harmless, I agree is not ideal and the same thing is present in this class in other methods as well maybe it is worth to have a separate patch to clean it up","commit_id":"6f07ea226e7f615e28036b3c2f49b4f838454b44"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"441d15f75a3bd37d8acd690f1100d6e79c1ddffa","unresolved":false,"context_lines":[{"line_number":2985,"context_line":"            #             the same time. When db access is removed from"},{"line_number":2986,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":2987,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":2988,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":2989,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":2990,"context_line":"                device_type\u003ddevice_type)"},{"line_number":2991,"context_line":"        return volume_bdm"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a5ae5dd_dc72687c","line":2988,"updated":"2016-02-03 17:20:42.000000000","message":"reserve_block_device_name is not called for instances that are shelved offloaded. This means that if \"device\" is not passed to the attach volume call, Cinder will get mountpoint\u003dNone. Cinder will never get the mountpoint in this case. If the instance is not shelved, Cinder will get a mountpoint. This is a strange quirk in the behavior.\n\nI understand the difficulty here - the reserve_block_device_name is an RPC that eventually goes to the compute driver, which isn\u0027t set at this point.  When the instance is unshelved, there is no API to update the information in Cinder. Is there any way to make the behavior consistent?","commit_id":"fe7759bf4fca2598383eaa9d267c8f84be45136b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f5a8f0f9b18b25c528138285a8e73fa7ac2b5d2","unresolved":false,"context_lines":[{"line_number":2985,"context_line":"            #             the same time. When db access is removed from"},{"line_number":2986,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":2987,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":2988,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":2989,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":2990,"context_line":"                device_type\u003ddevice_type)"},{"line_number":2991,"context_line":"        return volume_bdm"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a5ae5dd_d72563c2","line":2988,"in_reply_to":"5a5ae5dd_dc72687c","updated":"2016-02-03 17:51:59.000000000","message":"The device name that the compute driver coughs up is actually not (always) how it shows up in the guest. Representing the device name in nova\u0027s API is a huge mistake that would be wonderful to un-do.\n\nThus I\u0027m not sure it really matters if cinder doesn\u0027t have it in this case. We do end up calling the reserve_block_device_name() during unshelve, so if cinder has (or gets) a way to update the attachment after the fact, it could be called there.","commit_id":"fe7759bf4fca2598383eaa9d267c8f84be45136b"},{"author":{"_account_id":20354,"name":"Shoham Peller","email":"shohamp@gmail.com","username":"shoham.peller"},"change_message_id":"28c04d95c57834fdfeb3bd171eeead151d159f59","unresolved":false,"context_lines":[{"line_number":3095,"context_line":"        and delete the bdm record."},{"line_number":3096,"context_line":"        If the volume has delete_on_termination option set then we call the"},{"line_number":3097,"context_line":"        volume api delete as well."},{"line_number":3098,"context_line":""},{"line_number":3099,"context_line":"        \"\"\""},{"line_number":3100,"context_line":"        self._check_and_begin_detach(context, volume, instance)"},{"line_number":3101,"context_line":"        bdms \u003d [objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_6f1ce86a","line":3098,"updated":"2016-02-02 16:36:10.000000000","message":"redundant blank line","commit_id":"fe7759bf4fca2598383eaa9d267c8f84be45136b"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4650bd449434e8a92a0c31ed5a95ea9ba28d7790","unresolved":false,"context_lines":[{"line_number":3095,"context_line":"        and delete the bdm record."},{"line_number":3096,"context_line":"        If the volume has delete_on_termination option set then we call the"},{"line_number":3097,"context_line":"        volume api delete as well."},{"line_number":3098,"context_line":""},{"line_number":3099,"context_line":"        \"\"\""},{"line_number":3100,"context_line":"        self._check_and_begin_detach(context, volume, instance)"},{"line_number":3101,"context_line":"        bdms \u003d [objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":17,"id":"7a5de9d1_2a17be55","line":3098,"in_reply_to":"7a5de9d1_6f1ce86a","updated":"2016-02-02 16:58:42.000000000","message":"Done","commit_id":"fe7759bf4fca2598383eaa9d267c8f84be45136b"}],"nova/compute/manager.py":[{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"60eab5eedfe9b156c984fa2dfb2fea027ca15b3d","unresolved":false,"context_lines":[{"line_number":1737,"context_line":"        for bdm in bdms_no_device_name:"},{"line_number":1738,"context_line":"            device_name \u003d self._get_device_name_for_instance(instance,"},{"line_number":1739,"context_line":"                                                                 bdms,"},{"line_number":1740,"context_line":"                                                                 bdm)"},{"line_number":1741,"context_line":"            values \u003d {\u0027device_name\u0027: device_name}"},{"line_number":1742,"context_line":"            bdm.update(values)"},{"line_number":1743,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_c77d2d6e","line":1740,"updated":"2016-01-11 14:46:41.000000000","message":"nit: indentation","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"b382841aa7968f8c1a8443cf2f1070882b1ceffb","unresolved":false,"context_lines":[{"line_number":1737,"context_line":"        for bdm in bdms_no_device_name:"},{"line_number":1738,"context_line":"            device_name \u003d self._get_device_name_for_instance(instance,"},{"line_number":1739,"context_line":"                                                                 bdms,"},{"line_number":1740,"context_line":"                                                                 bdm)"},{"line_number":1741,"context_line":"            values \u003d {\u0027device_name\u0027: device_name}"},{"line_number":1742,"context_line":"            bdm.update(values)"},{"line_number":1743,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_75754696","line":1740,"in_reply_to":"fa69d971_c77d2d6e","updated":"2016-01-13 17:56:19.000000000","message":"Done","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"60eab5eedfe9b156c984fa2dfb2fea027ca15b3d","unresolved":false,"context_lines":[{"line_number":4331,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":4332,"context_line":"                context, instance.uuid)"},{"line_number":4333,"context_line":"        block_device_info \u003d self._prep_block_device(context, instance, bdms,"},{"line_number":4334,"context_line":"                                        do_check_attach\u003dFalse)"},{"line_number":4335,"context_line":"        scrubbed_keys \u003d self._unshelve_instance_key_scrub(instance)"},{"line_number":4336,"context_line":""},{"line_number":4337,"context_line":"        if node is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_67424140","line":4334,"updated":"2016-01-11 14:46:41.000000000","message":"nit: indentation shouldn\u0027t change here","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"b382841aa7968f8c1a8443cf2f1070882b1ceffb","unresolved":false,"context_lines":[{"line_number":4331,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":4332,"context_line":"                context, instance.uuid)"},{"line_number":4333,"context_line":"        block_device_info \u003d self._prep_block_device(context, instance, bdms,"},{"line_number":4334,"context_line":"                                        do_check_attach\u003dFalse)"},{"line_number":4335,"context_line":"        scrubbed_keys \u003d self._unshelve_instance_key_scrub(instance)"},{"line_number":4336,"context_line":""},{"line_number":4337,"context_line":"        if node is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_9578fa90","line":4334,"in_reply_to":"fa69d971_67424140","updated":"2016-01-13 17:56:19.000000000","message":"Done","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"}],"nova/tests/unit/compute/test_shelve.py":[{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"60eab5eedfe9b156c984fa2dfb2fea027ca15b3d","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \u0027unshelve.start\u0027)"},{"line_number":240,"context_line":"        self.compute._prep_block_device(self.context, instance,"},{"line_number":241,"context_line":"                mox.IgnoreArg(),"},{"line_number":242,"context_line":"                do_check_attach\u003dFalse).AndReturn(\u0027fake_bdm\u0027)"},{"line_number":243,"context_line":"        self.compute.network_api.setup_instance_network_on_host("},{"line_number":244,"context_line":"                self.context, instance, self.compute.host)"},{"line_number":245,"context_line":"        self.compute.driver.spawn(self.context, instance, image,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_e7a151aa","line":242,"updated":"2016-01-11 14:46:41.000000000","message":"nit: this shouldn\u0027t change","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"71a39ff3ab73f223bb3b8a18fbf7ba05be322f5c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \u0027unshelve.start\u0027)"},{"line_number":240,"context_line":"        self.compute._prep_block_device(self.context, instance,"},{"line_number":241,"context_line":"                mox.IgnoreArg(),"},{"line_number":242,"context_line":"                do_check_attach\u003dFalse).AndReturn(\u0027fake_bdm\u0027)"},{"line_number":243,"context_line":"        self.compute.network_api.setup_instance_network_on_host("},{"line_number":244,"context_line":"                self.context, instance, self.compute.host)"},{"line_number":245,"context_line":"        self.compute.driver.spawn(self.context, instance, image,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_382c6701","line":242,"in_reply_to":"fa69d971_e7a151aa","updated":"2016-01-11 16:13:29.000000000","message":"ops, you are right, that is because in one of the previous patches I changed this file and the new line was required. I am going to fix it if I need (of course I will) to put a new PS","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"60eab5eedfe9b156c984fa2dfb2fea027ca15b3d","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        self.compute._prep_block_device(self.context, instance,"},{"line_number":315,"context_line":"                                mox.IgnoreArg(),"},{"line_number":316,"context_line":"                                do_check_attach\u003dFalse).AndReturn(\u0027fake_bdm\u0027)"},{"line_number":317,"context_line":"        self.compute.network_api.setup_instance_network_on_host("},{"line_number":318,"context_line":"                self.context, instance, self.compute.host)"},{"line_number":319,"context_line":"        self.rt.instance_claim(self.context, instance, limits).AndReturn("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_6796c14d","line":316,"updated":"2016-01-11 14:46:41.000000000","message":"nit: this shouldn\u0027t change","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"71a39ff3ab73f223bb3b8a18fbf7ba05be322f5c","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        self.compute._prep_block_device(self.context, instance,"},{"line_number":315,"context_line":"                                mox.IgnoreArg(),"},{"line_number":316,"context_line":"                                do_check_attach\u003dFalse).AndReturn(\u0027fake_bdm\u0027)"},{"line_number":317,"context_line":"        self.compute.network_api.setup_instance_network_on_host("},{"line_number":318,"context_line":"                self.context, instance, self.compute.host)"},{"line_number":319,"context_line":"        self.rt.instance_claim(self.context, instance, limits).AndReturn("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_1837234e","line":316,"in_reply_to":"fa69d971_6796c14d","updated":"2016-01-11 16:13:29.000000000","message":"same as above","commit_id":"db7a0a7e2b1e2847b7e1ed20a7cc458b5064f8e5"}]}
