)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"dc2e0d9c1903a1bcefbcc0a0ce3409efc5c0966c","unresolved":false,"context_lines":[{"line_number":2530,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2531,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":"        detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":""},{"line_number":2535,"context_line":"        instance.task_state \u003d task_states.REBUILD_BLOCK_DEVICE_MAPPING"},{"line_number":2536,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILDING])"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_6fa1ddf7","line":2533,"updated":"2015-07-27 18:54:40.000000000","message":"is it correct to do this after driver.destroy?","commit_id":"94a972e29c518b3f82aa4a3429c1aa348afcf275"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"ac4ee4e60f30fca1395f47dfe496c7565fa8c37a","unresolved":false,"context_lines":[{"line_number":2530,"context_line":"                                network_info\u003dnetwork_info,"},{"line_number":2531,"context_line":"                                block_device_info\u003dblock_device_info)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":"        detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":""},{"line_number":2535,"context_line":"        instance.task_state \u003d task_states.REBUILD_BLOCK_DEVICE_MAPPING"},{"line_number":2536,"context_line":"        instance.save(expected_task_state\u003d[task_states.REBUILDING])"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_067a5788","line":2533,"in_reply_to":"3a50d1a3_6fa1ddf7","updated":"2015-07-28 14:55:56.000000000","message":"That\u0027s a good one. \n\nIt\u0027s totally safe for libvirt driver as it simply will ignore the missing domain and skip the driver level volume detach (https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L1210)\n\nAt the same time, it might not be true for other hypervisors, so it\u0027s probably safer to power off the domain gracefully, then detach the block devices and finally destroy the instance.\n\nGood catch, thank you!","commit_id":"94a972e29c518b3f82aa4a3429c1aa348afcf275"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e5b1e6e2224d2c64301451c0cab4fedc16feb286","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            # partitions."},{"line_number":2527,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":2528,"context_line":""},{"line_number":2529,"context_line":"        if not recreate:"},{"line_number":2530,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2531,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2532,"context_line":"            self.driver.destroy(context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_76ee4623","line":2529,"updated":"2015-07-29 07:33:27.000000000","message":"nit: if you reverse condition, the whole compound operator will be somewhat more readable","commit_id":"f28afb06213b5763eefffcc2f6bafff5237d9285"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"8187c8aaba2b4fcf248367d6fbf85a8a7777ef2b","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            # partitions."},{"line_number":2527,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":2528,"context_line":""},{"line_number":2529,"context_line":"        if not recreate:"},{"line_number":2530,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2531,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2532,"context_line":"            self.driver.destroy(context, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_c879ab30","line":2529,"in_reply_to":"3a50d1a3_76ee4623","updated":"2015-07-29 12:52:25.000000000","message":"Done","commit_id":"f28afb06213b5763eefffcc2f6bafff5237d9285"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e5b1e6e2224d2c64301451c0cab4fedc16feb286","unresolved":false,"context_lines":[{"line_number":2527,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":2528,"context_line":""},{"line_number":2529,"context_line":"        if not recreate:"},{"line_number":2530,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2531,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2532,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2533,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_5f623d3f","line":2530,"updated":"2015-07-29 07:33:27.000000000","message":"If you place it here (for default implementation only), driver.rebuild should perform graceful shutdown if recreate\u003dFalse is specified. Is it really so? Frankly, i don\u0027t know this. Only Ironic implements driver.rebuild, but i don\u0027t know how it works inside.","commit_id":"f28afb06213b5763eefffcc2f6bafff5237d9285"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"8187c8aaba2b4fcf248367d6fbf85a8a7777ef2b","unresolved":false,"context_lines":[{"line_number":2527,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":2528,"context_line":""},{"line_number":2529,"context_line":"        if not recreate:"},{"line_number":2530,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2531,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2532,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2533,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_e896e73c","line":2530,"in_reply_to":"3a50d1a3_5f623d3f","updated":"2015-07-29 12:52:25.000000000","message":"Indeed. It will be left up to drivers to perform the particular kind of shutdown they want/can implement.\n\nI think that\u0027s ok. The idea of this patch was to improve the general case specifically.","commit_id":"f28afb06213b5763eefffcc2f6bafff5237d9285"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"ef196be2c2381da661e045bc55ee44eb8bb00b7d","unresolved":false,"context_lines":[{"line_number":2527,"context_line":"            raise exception.PreserveEphemeralNotSupported()"},{"line_number":2528,"context_line":""},{"line_number":2529,"context_line":"        if not recreate:"},{"line_number":2530,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2531,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2532,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2533,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ae28e7e2","line":2530,"in_reply_to":"3a50d1a3_e896e73c","updated":"2015-07-29 13:25:15.000000000","message":"ok, make sense\n\nBut do you know, if ironic supports it? Just a question...","commit_id":"f28afb06213b5763eefffcc2f6bafff5237d9285"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"9f1807c4ce47a8178d0ddf7ae3b3adce26d8b24f","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"        if recreate:"},{"line_number":2530,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2531,"context_line":"        else:"},{"line_number":2532,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2533,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2535,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_f99210fc","line":2532,"updated":"2015-07-30 05:52:29.000000000","message":"optimization hint: cal this only if at least one block device is present in bdm\n\nThere is no reason to wait graceful shutdown when only local disks are attached to the instance.","commit_id":"7fe20e96f2604d03ec6a7fa563485ffdcb5cc519"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a1e16317745d491420e6c04c9060885dba32500","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"        if recreate:"},{"line_number":2530,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2531,"context_line":"        else:"},{"line_number":2532,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2533,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2535,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_81db59ed","line":2532,"in_reply_to":"3a50d1a3_82e02c98","updated":"2015-08-17 13:26:44.000000000","message":"I am thinking we should have clean_shutdown\u003dfalse here, honestly.","commit_id":"7fe20e96f2604d03ec6a7fa563485ffdcb5cc519"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"2ab8a2eadc9de789de42c3a92b84359f32d76c10","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"        if recreate:"},{"line_number":2530,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2531,"context_line":"        else:"},{"line_number":2532,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2533,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2535,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_82e02c98","line":2532,"in_reply_to":"3a50d1a3_f99210fc","updated":"2015-07-30 09:52:46.000000000","message":"Well, there might still be some applications running, which could properly notify all the clients connected over a network, that they are shutting down. Not a bit deal, of course, but I\u0027d rather use graceful shutdown here :P","commit_id":"7fe20e96f2604d03ec6a7fa563485ffdcb5cc519"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6696d96ad75c2dd171d3215f637ff56ed8d16335","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"        if recreate:"},{"line_number":2530,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2531,"context_line":"        else:"},{"line_number":2532,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2533,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2535,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_0e109000","line":2532,"in_reply_to":"fa1b9901_3ae71642","updated":"2015-08-18 17:54:17.000000000","message":"true, thats a good excuse to change. I was thinking consistency with the old approach, and its rebuilding so its re-creating, but thats not quite true for the block devices","commit_id":"7fe20e96f2604d03ec6a7fa563485ffdcb5cc519"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0918705e0cb279dd3a291e3314424ac4872b7f01","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"        if recreate:"},{"line_number":2530,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2531,"context_line":"        else:"},{"line_number":2532,"context_line":"            self._power_off_instance(context, instance, clean_shutdown\u003dTrue)"},{"line_number":2533,"context_line":"            detach_block_devices(context, bdms)"},{"line_number":2534,"context_line":"            self.driver.destroy(context, instance,"},{"line_number":2535,"context_line":"                                network_info\u003dnetwork_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_3ae71642","line":2532,"in_reply_to":"fa1b9901_81db59ed","updated":"2015-08-17 14:10:20.000000000","message":"I think clean_shutdown\u003dFalse is only really acceptable when there is no network attached storage.  Yanking the power in that case could lead to corruption.","commit_id":"7fe20e96f2604d03ec6a7fa563485ffdcb5cc519"}]}
