)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05c115cb24ce7ff4aa1ea8f27066d6ebc8adb035","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    shared \u003d self.check_can_live_migrate_destination(context,"},{"line_number":442,"context_line":"                                                                 instance)"},{"line_number":443,"context_line":"                except exception.InvalidSharedStorage:"},{"line_number":444,"context_line":"                    shared \u003d False"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"                self.driver.destroy(instance,"},{"line_number":447,"context_line":"                                    self._legacy_nw_info(network_info),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2F%2B1A%3D","line":444,"updated":"2013-03-18 16:16:24.000000000","message":"What happens if the source compute node is down when we make this call? Looks to me like we crash on startup and prevent this compute node from being restarted.","commit_id":"9a1b8ca9fd7036275a9ff75ad98594838768f6d6"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"848658dc15b1898dfc2d1a30eb2b01236f46bed4","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    shared \u003d self.check_can_live_migrate_destination(context,"},{"line_number":442,"context_line":"                                                                 instance)"},{"line_number":443,"context_line":"                except exception.InvalidSharedStorage:"},{"line_number":444,"context_line":"                    shared \u003d False"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"                self.driver.destroy(instance,"},{"line_number":447,"context_line":"                                    self._legacy_nw_info(network_info),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2F%2Bkc%3D","line":444,"in_reply_to":"AAAAOH%2F%2F%2B1A%3D","updated":"2013-03-18 18:53:07.000000000","message":"AFAICT, this will run on the source host during init, and is trying to check if the instance is backed by shared storage. However, it looks like it is relying on the behavior of the libvirt driver here, not anything in compute/manager.py or virt/driver.py. Whether a driver supports live migrate and whether the instance is backed by shared storage seem orthogonal (and only coincidentally related in the libvirt driver).","commit_id":"9a1b8ca9fd7036275a9ff75ad98594838768f6d6"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"c0bba019bd0495aa8bdfd36b67a3f790ba95745d","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    shared \u003d self.check_can_live_migrate_destination(context,"},{"line_number":442,"context_line":"                                                                 instance)"},{"line_number":443,"context_line":"                except exception.InvalidSharedStorage:"},{"line_number":444,"context_line":"                    shared \u003d False"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"                self.driver.destroy(instance,"},{"line_number":447,"context_line":"                                    self._legacy_nw_info(network_info),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2F9L0%3D","line":444,"in_reply_to":"AAAAOH%2F%2F%2B1A%3D","updated":"2013-03-19 16:55:15.000000000","message":"Right. Fixed this issue in the last patch. Now if the remote host is down the instance will be deleted, but the disks will remain. We can\u0027t assume that it is not shared and delete it.","commit_id":"9a1b8ca9fd7036275a9ff75ad98594838768f6d6"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"c0bba019bd0495aa8bdfd36b67a3f790ba95745d","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    shared \u003d self.check_can_live_migrate_destination(context,"},{"line_number":442,"context_line":"                                                                 instance)"},{"line_number":443,"context_line":"                except exception.InvalidSharedStorage:"},{"line_number":444,"context_line":"                    shared \u003d False"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"                self.driver.destroy(instance,"},{"line_number":447,"context_line":"                                    self._legacy_nw_info(network_info),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2F9LQ%3D","line":444,"in_reply_to":"AAAAOH%2F%2F%2Bkc%3D","updated":"2013-03-19 16:55:15.000000000","message":"Done. Added new manager method to check on remote host if the instance is running on shared storage. As well had to add 3 new driver methods to support it.","commit_id":"9a1b8ca9fd7036275a9ff75ad98594838768f6d6"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fb64f756a95709d8fa3e674cfa0696253f4fc617","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                if data:"},{"line_number":444,"context_line":"                    try:"},{"line_number":445,"context_line":"                        shared_storage \u003d self.compute_rpcapi.\\"},{"line_number":446,"context_line":"                                    check_instance_shared_storage(context,"},{"line_number":447,"context_line":"                                                          instance,"},{"line_number":448,"context_line":"                                                          data)"},{"line_number":449,"context_line":"                    except Exception, e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FzyE%3D","line":446,"updated":"2013-03-26 18:35:33.000000000","message":"I don\u0027t understand.  Why are we calling out to the compute_rpcapi from within the compute manager?  Won\u0027t that just cause a call back to self.check_instance_shared_storage(), which will in turn call self.driver.check_instance_shared_storage()?  Why not cut out the RPC middleman on this?  Or am I missing something?","commit_id":"c7415f0fd256899d7e2414a3c2dc93aa90f0566c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"628a2f060e8dc8c966fc098cbe67364bdc401443","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                if data:"},{"line_number":444,"context_line":"                    try:"},{"line_number":445,"context_line":"                        shared_storage \u003d self.compute_rpcapi.\\"},{"line_number":446,"context_line":"                                    check_instance_shared_storage(context,"},{"line_number":447,"context_line":"                                                          instance,"},{"line_number":448,"context_line":"                                                          data)"},{"line_number":449,"context_line":"                    except Exception, e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fzj8%3D","line":446,"in_reply_to":"AAAAOH%2F%2FzxE%3D","updated":"2013-03-26 20:37:14.000000000","message":"Ah, OK, that makes sense.","commit_id":"c7415f0fd256899d7e2414a3c2dc93aa90f0566c"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"18b39e59524daa0db799414733eb855c4ba84a15","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                if data:"},{"line_number":444,"context_line":"                    try:"},{"line_number":445,"context_line":"                        shared_storage \u003d self.compute_rpcapi.\\"},{"line_number":446,"context_line":"                                    check_instance_shared_storage(context,"},{"line_number":447,"context_line":"                                                          instance,"},{"line_number":448,"context_line":"                                                          data)"},{"line_number":449,"context_line":"                    except Exception, e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FzxE%3D","line":446,"in_reply_to":"AAAAOH%2F%2FzyE%3D","updated":"2013-03-26 18:59:28.000000000","message":"Correct, we are calling the check_instance_shared_storage() on the \"other\" compute node (the node that the instance is currently running on). This is required in order to check whether instance is running on same shared storage the current host on (very similar to the live migrate flow).","commit_id":"c7415f0fd256899d7e2414a3c2dc93aa90f0566c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fb64f756a95709d8fa3e674cfa0696253f4fc617","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                                    check_instance_shared_storage(context,"},{"line_number":447,"context_line":"                                                          instance,"},{"line_number":448,"context_line":"                                                          data)"},{"line_number":449,"context_line":"                    except Exception, e:"},{"line_number":450,"context_line":"                        LOG.exception(_(\u0027Failed to check if instance shared\u0027),"},{"line_number":451,"context_line":"                                  instance\u003dinstance)"},{"line_number":452,"context_line":"                    finally:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FzzA%3D","line":449,"updated":"2013-03-26 18:35:33.000000000","message":"Please use the \u0027as\u0027 syntax, that is:\n\n    except Exception as e:","commit_id":"c7415f0fd256899d7e2414a3c2dc93aa90f0566c"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"18b39e59524daa0db799414733eb855c4ba84a15","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                                    check_instance_shared_storage(context,"},{"line_number":447,"context_line":"                                                          instance,"},{"line_number":448,"context_line":"                                                          data)"},{"line_number":449,"context_line":"                    except Exception, e:"},{"line_number":450,"context_line":"                        LOG.exception(_(\u0027Failed to check if instance shared\u0027),"},{"line_number":451,"context_line":"                                  instance\u003dinstance)"},{"line_number":452,"context_line":"                    finally:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fzww%3D","line":449,"in_reply_to":"AAAAOH%2F%2FzzA%3D","updated":"2013-03-26 18:59:28.000000000","message":"Done","commit_id":"c7415f0fd256899d7e2414a3c2dc93aa90f0566c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f50cc9acf9795260850b27abd33be3533d6d279f","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":445,"context_line":"                                                                  instance)"},{"line_number":446,"context_line":"                shared_storage \u003d True"},{"line_number":447,"context_line":"                data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":448,"context_line":"                                                               instance)"},{"line_number":449,"context_line":"                if data:"},{"line_number":450,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F8uM%3D","line":447,"updated":"2013-04-04 20:31:48.000000000","message":"This, and the other two new driver method, could raise NotImplementedError which would cause destroy to not get called.  I think a failure to confirm shared storage should fall back to current behavior.","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"bb9e896c4fb6c2d52b923ee9b9901df513008372","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":445,"context_line":"                                                                  instance)"},{"line_number":446,"context_line":"                shared_storage \u003d True"},{"line_number":447,"context_line":"                data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":448,"context_line":"                                                               instance)"},{"line_number":449,"context_line":"                if data:"},{"line_number":450,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6WU%3D","line":447,"in_reply_to":"AAAAOX%2F%2F8cY%3D","updated":"2013-04-07 14:27:59.000000000","message":"Done","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"6c824d53e25c5b1241bc6cec1c0b1dee6142ef78","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":445,"context_line":"                                                                  instance)"},{"line_number":446,"context_line":"                shared_storage \u003d True"},{"line_number":447,"context_line":"                data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":448,"context_line":"                                                               instance)"},{"line_number":449,"context_line":"                if data:"},{"line_number":450,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F8cY%3D","line":447,"in_reply_to":"AAAAOX%2F%2F8uM%3D","updated":"2013-04-04 22:21:27.000000000","message":"++ on this suggestion. Also feels like this logic would do well in it\u0027s own function.","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"bb9e896c4fb6c2d52b923ee9b9901df513008372","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":445,"context_line":"                                                                  instance)"},{"line_number":446,"context_line":"                shared_storage \u003d True"},{"line_number":447,"context_line":"                data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":448,"context_line":"                                                               instance)"},{"line_number":449,"context_line":"                if data:"},{"line_number":450,"context_line":"                    try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6WY%3D","line":447,"in_reply_to":"AAAAOX%2F%2F8uM%3D","updated":"2013-04-07 14:27:59.000000000","message":"Done","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"f9b33e0bb0bece7549677d8530ef5b1128624252","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                           \u0027%(instance_host)s) is not equal to our \u0027"},{"line_number":441,"context_line":"                           \u0027host (%(our_host)s).\u0027),"},{"line_number":442,"context_line":"                         locals(), instance\u003dinstance)"},{"line_number":443,"context_line":"                # TODO(deva): detect if instance\u0027s disk is shared or local,"},{"line_number":444,"context_line":"                #             and destroy if it is local."},{"line_number":445,"context_line":"                destroy_disks \u003d False"},{"line_number":446,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOX%2F%2F5bA%3D","line":443,"updated":"2013-04-08 17:12:32.000000000","message":"I think your patch can safely remove this TODO :)","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"e1aaecf5d686b8593974b0fb3b8e42106bd7bad8","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                           \u0027%(instance_host)s) is not equal to our \u0027"},{"line_number":441,"context_line":"                           \u0027host (%(our_host)s).\u0027),"},{"line_number":442,"context_line":"                         locals(), instance\u003dinstance)"},{"line_number":443,"context_line":"                # TODO(deva): detect if instance\u0027s disk is shared or local,"},{"line_number":444,"context_line":"                #             and destroy if it is local."},{"line_number":445,"context_line":"                destroy_disks \u003d False"},{"line_number":446,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2F%2Fy0%3D","line":443,"in_reply_to":"AAAAOX%2F%2F5bA%3D","updated":"2013-04-08 20:42:47.000000000","message":"Done","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"314d09b8760e9b07cf68fa5274ec861a81097c7b","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def _is_instance_storage_shared(self, context, instance):"},{"line_number":466,"context_line":"        shared_storage \u003d True"},{"line_number":467,"context_line":"        data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":468,"context_line":"                                                       instance)"},{"line_number":469,"context_line":"        if data:"},{"line_number":470,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOX%2F%2F5lo%3D","line":467,"updated":"2013-04-08 15:57:03.000000000","message":"This should be inside the try/except block below.  This has a good chance, currently, of raising NotImplementedError.  The \u0027if data:\u0027 check will need to move as well.","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"e1aaecf5d686b8593974b0fb3b8e42106bd7bad8","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def _is_instance_storage_shared(self, context, instance):"},{"line_number":466,"context_line":"        shared_storage \u003d True"},{"line_number":467,"context_line":"        data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":468,"context_line":"                                                       instance)"},{"line_number":469,"context_line":"        if data:"},{"line_number":470,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2F%2Fy4%3D","line":467,"in_reply_to":"AAAAOX%2F%2F5lo%3D","updated":"2013-04-08 20:42:47.000000000","message":"Right. Done. Also added test to cover case when its raising NotImplemented.","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"f9b33e0bb0bece7549677d8530ef5b1128624252","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                          instance\u003dinstance)"},{"line_number":484,"context_line":"            finally:"},{"line_number":485,"context_line":"                self.driver.\\"},{"line_number":486,"context_line":"                    check_instance_shared_storage_cleanup(context,"},{"line_number":487,"context_line":"                                                          data)"},{"line_number":488,"context_line":"        return shared_storage"},{"line_number":489,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOX%2F%2F5bE%3D","line":486,"updated":"2013-04-08 17:12:32.000000000","message":"This could also raise (eg, if the delete fails for some reason, or the driver didn\u0027t implement this method), so I think it also belongs in a try block.","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"e1aaecf5d686b8593974b0fb3b8e42106bd7bad8","unresolved":false,"context_lines":[{"line_number":483,"context_line":"                          instance\u003dinstance)"},{"line_number":484,"context_line":"            finally:"},{"line_number":485,"context_line":"                self.driver.\\"},{"line_number":486,"context_line":"                    check_instance_shared_storage_cleanup(context,"},{"line_number":487,"context_line":"                                                          data)"},{"line_number":488,"context_line":"        return shared_storage"},{"line_number":489,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2F%2Fz0%3D","line":486,"in_reply_to":"AAAAOX%2F%2F5bE%3D","updated":"2013-04-08 20:42:47.000000000","message":"It can\u0027t, i made it pass instead of throwing NotImplemented in the virt.driver","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"8fe33c7bca6098bd3d8feb516e4f9a9de11aa8b3","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                                                              instance)"},{"line_number":447,"context_line":"                    bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":448,"context_line":"                                                                      instance)"},{"line_number":449,"context_line":"                    destroy_disks \u003d not self.\\"},{"line_number":450,"context_line":"                                _is_instance_storage_shared(context, instance)"},{"line_number":451,"context_line":"                except exception.InstanceNotFound:"},{"line_number":452,"context_line":"                    network_info \u003d network_model.NetworkInfo()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FkU%3D","line":449,"updated":"2013-04-08 21:46:21.000000000","message":"can we please avoid the \\ at the end of the line by using ()?","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"972a20360512c1d25e2a8174bfe2cd39a8c00aa7","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                                                              instance)"},{"line_number":447,"context_line":"                    bdi \u003d self._get_instance_volume_block_device_info(context,"},{"line_number":448,"context_line":"                                                                      instance)"},{"line_number":449,"context_line":"                    destroy_disks \u003d not self.\\"},{"line_number":450,"context_line":"                                _is_instance_storage_shared(context, instance)"},{"line_number":451,"context_line":"                except exception.InstanceNotFound:"},{"line_number":452,"context_line":"                    network_info \u003d network_model.NetworkInfo()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FYw%3D","line":449,"in_reply_to":"AAAAOn%2F%2F%2FkU%3D","updated":"2013-04-08 23:20:34.000000000","message":"Done","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"8fe33c7bca6098bd3d8feb516e4f9a9de11aa8b3","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":468,"context_line":"                                                       instance)"},{"line_number":469,"context_line":"            if data:"},{"line_number":470,"context_line":"                shared_storage \u003d self.compute_rpcapi.\\"},{"line_number":471,"context_line":"                            check_instance_shared_storage(context,"},{"line_number":472,"context_line":"                                                  instance,"},{"line_number":473,"context_line":"                                                  data)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FkQ%3D","line":470,"updated":"2013-04-08 21:46:21.000000000","message":"ditto","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"972a20360512c1d25e2a8174bfe2cd39a8c00aa7","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            data \u003d self.driver.check_instance_shared_storage_local(context,"},{"line_number":468,"context_line":"                                                       instance)"},{"line_number":469,"context_line":"            if data:"},{"line_number":470,"context_line":"                shared_storage \u003d self.compute_rpcapi.\\"},{"line_number":471,"context_line":"                            check_instance_shared_storage(context,"},{"line_number":472,"context_line":"                                                  instance,"},{"line_number":473,"context_line":"                                                  data)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FYk%3D","line":470,"in_reply_to":"AAAAOn%2F%2F%2FkQ%3D","updated":"2013-04-08 23:20:34.000000000","message":"Done","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"8fe33c7bca6098bd3d8feb516e4f9a9de11aa8b3","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                      instance\u003dinstance)"},{"line_number":483,"context_line":"        finally:"},{"line_number":484,"context_line":"            if data:"},{"line_number":485,"context_line":"                self.driver.\\"},{"line_number":486,"context_line":"                    check_instance_shared_storage_cleanup(context,"},{"line_number":487,"context_line":"                                                          data)"},{"line_number":488,"context_line":"        return shared_storage"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FkM%3D","line":485,"updated":"2013-04-08 21:46:21.000000000","message":"ditto","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"972a20360512c1d25e2a8174bfe2cd39a8c00aa7","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                      instance\u003dinstance)"},{"line_number":483,"context_line":"        finally:"},{"line_number":484,"context_line":"            if data:"},{"line_number":485,"context_line":"                self.driver.\\"},{"line_number":486,"context_line":"                    check_instance_shared_storage_cleanup(context,"},{"line_number":487,"context_line":"                                                          data)"},{"line_number":488,"context_line":"        return shared_storage"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2F%2FYI%3D","line":485,"in_reply_to":"AAAAOn%2F%2F%2FkM%3D","updated":"2013-04-08 23:20:34.000000000","message":"Done","commit_id":"a5d45cae6a49a4ea913fa388e7fdfc211303b04a"}],"nova/tests/compute/test_compute.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"6c824d53e25c5b1241bc6cec1c0b1dee6142ef78","unresolved":false,"context_lines":[{"line_number":3844,"context_line":"                evacuated_instance).AndReturn({\u0027filename\u0027: \u0027tmpfilename\u0027})"},{"line_number":3845,"context_line":"        self.compute.compute_rpcapi.check_instance_shared_storage(fake_context,"},{"line_number":3846,"context_line":"                evacuated_instance,"},{"line_number":3847,"context_line":"                {\u0027filename\u0027: \u0027tmpfilename\u0027}).AndReturn(True)"},{"line_number":3848,"context_line":"        self.compute.driver.check_instance_shared_storage_cleanup(fake_context,"},{"line_number":3849,"context_line":"                {\u0027filename\u0027: \u0027tmpfilename\u0027})"},{"line_number":3850,"context_line":"        self.compute._legacy_nw_info(\u0027fake_network_info\u0027).AndReturn("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F8c8%3D","line":3847,"updated":"2013-04-04 22:21:27.000000000","message":"Do we also want a test where this returns false?","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"bb9e896c4fb6c2d52b923ee9b9901df513008372","unresolved":false,"context_lines":[{"line_number":3844,"context_line":"                evacuated_instance).AndReturn({\u0027filename\u0027: \u0027tmpfilename\u0027})"},{"line_number":3845,"context_line":"        self.compute.compute_rpcapi.check_instance_shared_storage(fake_context,"},{"line_number":3846,"context_line":"                evacuated_instance,"},{"line_number":3847,"context_line":"                {\u0027filename\u0027: \u0027tmpfilename\u0027}).AndReturn(True)"},{"line_number":3848,"context_line":"        self.compute.driver.check_instance_shared_storage_cleanup(fake_context,"},{"line_number":3849,"context_line":"                {\u0027filename\u0027: \u0027tmpfilename\u0027})"},{"line_number":3850,"context_line":"        self.compute._legacy_nw_info(\u0027fake_network_info\u0027).AndReturn("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6Wk%3D","line":3847,"in_reply_to":"AAAAOX%2F%2F8c8%3D","updated":"2013-04-07 14:27:59.000000000","message":"Right! Added one.","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":475,"name":"Rick Harris","email":"rick.harris@rackspace.com","username":"rconradharris"},"change_message_id":"6c824d53e25c5b1241bc6cec1c0b1dee6142ef78","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        if not os.path.exists(data[\"filename\"]):"},{"line_number":2838,"context_line":"            return False"},{"line_number":2839,"context_line":"        else:"},{"line_number":2840,"context_line":"            return True"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2843,"context_line":"        if os.path.exists(data[\"filename\"]):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F8dc%3D","line":2840,"updated":"2013-04-04 22:21:27.000000000","message":"This has a double-negative in it; might be easier to read as:\n\nreturn os.path.exists(data[\u0027filename\u0027])","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"bb9e896c4fb6c2d52b923ee9b9901df513008372","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        if not os.path.exists(data[\"filename\"]):"},{"line_number":2838,"context_line":"            return False"},{"line_number":2839,"context_line":"        else:"},{"line_number":2840,"context_line":"            return True"},{"line_number":2841,"context_line":""},{"line_number":2842,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2843,"context_line":"        if os.path.exists(data[\"filename\"]):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F6Wc%3D","line":2840,"in_reply_to":"AAAAOX%2F%2F8dc%3D","updated":"2013-04-07 14:27:59.000000000","message":"Done","commit_id":"5731e3f50d88839d431f25387c9d27cc0851c1d4"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"f9b33e0bb0bece7549677d8530ef5b1128624252","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        return os.path.exists(data[\u0027filename\u0027])"},{"line_number":2838,"context_line":""},{"line_number":2839,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2840,"context_line":"        if os.path.exists(data[\"filename\"]):"},{"line_number":2841,"context_line":"            os.remove(data[\"filename\"])"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance_ref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOX%2F%2F5cw%3D","line":2840,"updated":"2013-04-08 17:12:32.000000000","message":"Race condition here. It would be better to use nova/utils.py delete_if_exists","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"e1aaecf5d686b8593974b0fb3b8e42106bd7bad8","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        return os.path.exists(data[\u0027filename\u0027])"},{"line_number":2838,"context_line":""},{"line_number":2839,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2840,"context_line":"        if os.path.exists(data[\"filename\"]):"},{"line_number":2841,"context_line":"            os.remove(data[\"filename\"])"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance_ref,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2F%2Fxw%3D","line":2840,"in_reply_to":"AAAAOX%2F%2F5cw%3D","updated":"2013-04-08 20:42:47.000000000","message":"Done","commit_id":"e0652a79c60cb4dda1be0a010ac37a45a80d35b1"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        return os.path.exists(data[\u0027filename\u0027])"},{"line_number":2838,"context_line":""},{"line_number":2839,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2840,"context_line":"        if os.path.exists(data[\"filename\"]):"},{"line_number":2841,"context_line":"            utils.delete_if_exists(data[\"filename\"])"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance_ref,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOn%2F%2F%2FNI%3D","line":2840,"updated":"2013-04-09 01:25:48.000000000","message":"This check is unnecessary, given that utils.delete_if_exists will swallow the exception, and there\u0027s still a tiny race condition here. Just calling utils.delete_if_exists is fine.","commit_id":"3d698bb2da814694f512096365b04c8f3bd37553"},{"author":{"_account_id":1782,"name":"Kravchenko Pavel","email":"kpavel@il.ibm.com","username":"kravchenko-pavel"},"change_message_id":"b2170779a82e4b0d4b01cf767b321e6a773f6e2d","unresolved":false,"context_lines":[{"line_number":2837,"context_line":"        return os.path.exists(data[\u0027filename\u0027])"},{"line_number":2838,"context_line":""},{"line_number":2839,"context_line":"    def check_instance_shared_storage_cleanup(self, ctxt, data):"},{"line_number":2840,"context_line":"        if os.path.exists(data[\"filename\"]):"},{"line_number":2841,"context_line":"            utils.delete_if_exists(data[\"filename\"])"},{"line_number":2842,"context_line":""},{"line_number":2843,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance_ref,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOn%2F%2F%2B4U%3D","line":2840,"in_reply_to":"AAAAOn%2F%2F%2FNI%3D","updated":"2013-04-09 08:10:27.000000000","message":"Done","commit_id":"3d698bb2da814694f512096365b04c8f3bd37553"}]}
