)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"ba31bb956c0e843ac0bfe07247efa12aef78846d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove cell api overrides for force-delete"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The force_delete method of nova/compute/cells_api module is actually"},{"line_number":10,"context_line":"not needed, as this method handle objects and is triggered when"},{"line_number":11,"context_line":"force-delete api is used for instance deletion in cells environment."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"It actually causes a race condition with instance deletion as it"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9aa53dc9_fb1eddb9","line":10,"updated":"2015-04-09 14:15:45.000000000","message":"handles*","commit_id":"79b5caebca7d075f32ab490cd53390c8bcc06e74"}],"nova/cells/manager.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"ba31bb956c0e843ac0bfe07247efa12aef78846d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    Scheduling requests get passed to the scheduler class."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    target \u003d oslo_messaging.Target(version\u003d\u00271.35\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":80,"context_line":"        LOG.warning(_LW(\u0027The cells feature of Nova is considered experimental \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa53dc9_963e888a","line":77,"updated":"2015-04-09 14:15:45.000000000","message":"I don\u0027t think this can merge now, because of the freeze.","commit_id":"79b5caebca7d075f32ab490cd53390c8bcc06e74"}],"nova/compute/api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"988297440f59b9131f4ff827be400efde0eb54f3","unresolved":false,"context_lines":[{"line_number":1817,"context_line":"                                                   delete_type\u003ddelete_type)"},{"line_number":1818,"context_line":""},{"line_number":1819,"context_line":"    def _do_soft_delete(self, context, instance, bdms, reservations\u003dNone,"},{"line_number":1820,"context_line":"                        local\u003dFalse, delete_type\u003ddelete_types.SOFT_DELETE):"},{"line_number":1821,"context_line":"        if local:"},{"line_number":1822,"context_line":"            instance.vm_state \u003d vm_states.SOFT_DELETED"},{"line_number":1823,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_e914874e","line":1820,"updated":"2015-03-03 16:48:47.000000000","message":"There should probably be a comment here explaining that delete_type is here because the signature has to match _do_delete().  I would even go so far as to default it to None as further indicate that it\u0027s not used.","commit_id":"adf8386b19e75010906ca7a1c616f0e03a1abcb3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"988297440f59b9131f4ff827be400efde0eb54f3","unresolved":false,"context_lines":[{"line_number":1844,"context_line":"                     deleted_at\u003dtimeutils.utcnow())"},{"line_number":1845,"context_line":""},{"line_number":1846,"context_line":"    def _delete_instance(self, context, instance,"},{"line_number":1847,"context_line":"                         delete_type\u003ddelete_types.DELETE):"},{"line_number":1848,"context_line":"        self._delete(context, instance, delete_type, self._do_delete,"},{"line_number":1849,"context_line":"                     task_state\u003dtask_states.DELETING)"},{"line_number":1850,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_ecad759c","line":1847,"updated":"2015-03-03 16:48:47.000000000","message":"To make this a bit easier I would suggest an alternate approach.  The issue is that _do_delete has to distinguish between a delete or forced delete.  I would make a copy of _do_delete called _do_force_delete and pass that in here if delete_type\u003d\u003ddelete_types.FORCE_DELETE.  There\u0027s already a _do_soft_delete so I would prefer following the precedent of a little duplication vs all the method signature changes.","commit_id":"adf8386b19e75010906ca7a1c616f0e03a1abcb3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5be6322744c285c6e2f9214c3951bbe2fcee9127","unresolved":false,"context_lines":[{"line_number":1794,"context_line":"        else:"},{"line_number":1795,"context_line":"            self.compute_rpcapi.terminate_instance(context, instance, bdms,"},{"line_number":1796,"context_line":"                                                   reservations\u003dreservations,"},{"line_number":1797,"context_line":"                                                   delete_type\u003d\u0027force_delete\u0027)"},{"line_number":1798,"context_line":""},{"line_number":1799,"context_line":"    def _do_soft_delete(self, context, instance, bdms, reservations\u003dNone,"},{"line_number":1800,"context_line":"                        local\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_34459816","line":1797,"updated":"2015-04-08 18:38:01.000000000","message":"I think we should keep this _do_force_delete function, please see my other comment.","commit_id":"325047aea91bad12e8c5287b5f443debbbe3e3c5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"63cae9c0743116ec44c2db10ae545d83551f1b33","unresolved":false,"context_lines":[{"line_number":1873,"context_line":"    @check_instance_state(must_have_launched\u003dFalse)"},{"line_number":1874,"context_line":"    def force_delete(self, context, instance):"},{"line_number":1875,"context_line":"        \"\"\"Force delete an instance in any vm_state/task_state.\"\"\""},{"line_number":1876,"context_line":"        self._delete_instance(context, instance, \u0027force_delete\u0027)"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"    def force_stop(self, context, instance, do_cast\u003dTrue, clean_shutdown\u003dTrue):"},{"line_number":1879,"context_line":"        LOG.debug(\"Going to try to stop instance\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_ddcb8c71","line":1876,"updated":"2015-04-07 00:30:50.000000000","message":"Shouldn\u0027t this call _delete as before, except with the self._do_force_delete instead of self._do_delete? And then you don\u0027t need to do any modifications to _delete_instance?","commit_id":"325047aea91bad12e8c5287b5f443debbbe3e3c5"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"f943207ab7e24216315fbcdf1b06771f56b073ad","unresolved":false,"context_lines":[{"line_number":1873,"context_line":"    @check_instance_state(must_have_launched\u003dFalse)"},{"line_number":1874,"context_line":"    def force_delete(self, context, instance):"},{"line_number":1875,"context_line":"        \"\"\"Force delete an instance in any vm_state/task_state.\"\"\""},{"line_number":1876,"context_line":"        self._delete_instance(context, instance, \u0027force_delete\u0027)"},{"line_number":1877,"context_line":""},{"line_number":1878,"context_line":"    def force_stop(self, context, instance, do_cast\u003dTrue, clean_shutdown\u003dTrue):"},{"line_number":1879,"context_line":"        LOG.debug(\"Going to try to stop instance\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa53dc9_63c0287d","line":1876,"in_reply_to":"9aa53dc9_ddcb8c71","updated":"2015-04-08 07:21:24.000000000","message":"Done","commit_id":"325047aea91bad12e8c5287b5f443debbbe3e3c5"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e18ed10d223b0819dedf5dd4f3edfb17cfde77b5","unresolved":false,"context_lines":[{"line_number":1775,"context_line":"            system_metadata\u003dsys_meta)"},{"line_number":1776,"context_line":""},{"line_number":1777,"context_line":"    def _do_delete(self, context, instance, bdms, reservations\u003dNone,"},{"line_number":1778,"context_line":"                   local\u003dFalse, delete_type\u003d\u0027delete\u0027):"},{"line_number":1779,"context_line":"        if local:"},{"line_number":1780,"context_line":"            instance.vm_state \u003d vm_states.DELETED"},{"line_number":1781,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa53dc9_b447684a","line":1778,"range":{"start_line":1778,"start_character":32,"end_line":1778,"end_character":43},"updated":"2015-04-08 18:36:43.000000000","message":"Don\u0027t need to add this.","commit_id":"83de005ef501647b5398dfb6db2d3ea313b7d88b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e18ed10d223b0819dedf5dd4f3edfb17cfde77b5","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"                                                   delete_type\u003ddelete_type)"},{"line_number":1788,"context_line":""},{"line_number":1789,"context_line":"    def _do_soft_delete(self, context, instance, bdms, reservations\u003dNone,"},{"line_number":1790,"context_line":"                        local\u003dFalse, delete_type\u003dNone):"},{"line_number":1791,"context_line":"        if local:"},{"line_number":1792,"context_line":"            instance.vm_state \u003d vm_states.SOFT_DELETED"},{"line_number":1793,"context_line":"            instance.task_state \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa53dc9_347238ae","line":1790,"updated":"2015-04-08 18:36:43.000000000","message":"Don\u0027t need to add this.","commit_id":"83de005ef501647b5398dfb6db2d3ea313b7d88b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e18ed10d223b0819dedf5dd4f3edfb17cfde77b5","unresolved":false,"context_lines":[{"line_number":1860,"context_line":"    @check_instance_state(must_have_launched\u003dFalse)"},{"line_number":1861,"context_line":"    def force_delete(self, context, instance):"},{"line_number":1862,"context_line":"        \"\"\"Force delete an instance in any vm_state/task_state.\"\"\""},{"line_number":1863,"context_line":"        self._delete(context, instance, \u0027force_delete\u0027, self._do_delete,"},{"line_number":1864,"context_line":"                     task_state\u003dtask_states.DELETING)"},{"line_number":1865,"context_line":""},{"line_number":1866,"context_line":"    def force_stop(self, context, instance, do_cast\u003dTrue, clean_shutdown\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa53dc9_9427c4b5","line":1863,"updated":"2015-04-08 18:36:43.000000000","message":"This isn\u0027t what I said.\n\nI was saying to keep the private function _do_force_delete and call _delete with it. For example:\n\n self._delete(context, instance, \u0027force_delete\u0027, self._do_force_delete,\n              task_state\u003dtask_states.DELETING)","commit_id":"83de005ef501647b5398dfb6db2d3ea313b7d88b"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"db250091dc9ab5db136c1b6e9f5a4c1ac18cf4e2","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"    def terminate_instance(self, ctxt, instance, bdms, reservations\u003dNone,"},{"line_number":801,"context_line":"                           delete_type\u003ddelete_types.DELETE):"},{"line_number":802,"context_line":"        version \u003d \u00273.36\u0027"},{"line_number":803,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":804,"context_line":"                version\u003dversion)"},{"line_number":805,"context_line":"        cctxt.cast(ctxt, \u0027terminate_instance\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_7fbbbbe4","line":802,"updated":"2014-12-04 11:01:16.000000000","message":"You need to add code that downgrades the message when cap is detected otherwise the client is capped at 3.35 but the message is still 3.36","commit_id":"bc09ac0f7e6d705a0fdcbaed6853e824c3f5bcae"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"988297440f59b9131f4ff827be400efde0eb54f3","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        cctxt.cast(ctxt, \u0027suspend_instance\u0027, instance\u003dinstance)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def terminate_instance(self, ctxt, instance, bdms, reservations\u003dNone,"},{"line_number":860,"context_line":"                           delete_type\u003ddelete_types.DELETE):"},{"line_number":861,"context_line":"        version \u003d \u00273.22\u0027"},{"line_number":862,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":863,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_0c972991","line":860,"updated":"2015-03-03 16:48:47.000000000","message":"This makes me really dislike this approach.  I understand why you have done this, but I don\u0027t like seeing non cells method signatures be disrupted to support something in cells.","commit_id":"adf8386b19e75010906ca7a1c616f0e03a1abcb3"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ffb07f1872f4714ce4c4ac84b01dd6d206643832","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        cctxt.cast(ctxt, \u0027suspend_instance\u0027, instance\u003dinstance)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def terminate_instance(self, ctxt, instance, bdms, reservations\u003dNone,"},{"line_number":860,"context_line":"                           delete_type\u003ddelete_types.DELETE):"},{"line_number":861,"context_line":"        version \u003d \u00273.22\u0027"},{"line_number":862,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":863,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_0d0343b9","line":860,"in_reply_to":"9a80dd14_f0a6d652","updated":"2015-03-04 15:08:05.000000000","message":"Ahh, that\u0027s right.  It might be worth commenting on that here then.","commit_id":"adf8386b19e75010906ca7a1c616f0e03a1abcb3"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"4a7091d3a898072841935150b12f7ca9f2d37210","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        cctxt.cast(ctxt, \u0027suspend_instance\u0027, instance\u003dinstance)"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def terminate_instance(self, ctxt, instance, bdms, reservations\u003dNone,"},{"line_number":860,"context_line":"                           delete_type\u003ddelete_types.DELETE):"},{"line_number":861,"context_line":"        version \u003d \u00273.22\u0027"},{"line_number":862,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":863,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_f0a6d652","line":860,"in_reply_to":"ba7be1f8_0c972991","updated":"2015-03-04 07:32:13.000000000","message":"Hi Andrew,\n\nIMO the method signature for terminate_instance should be same in both cells and non-cells environment.\n\nPlease check this: https://github.com/openstack/nova/blob/master/nova/compute/cells_api.py#L42","commit_id":"adf8386b19e75010906ca7a1c616f0e03a1abcb3"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"4dabe8129a551ede01e82711befaca4542ad3285","unresolved":false,"context_lines":[{"line_number":782,"context_line":"                           delete_type\u003dNone):"},{"line_number":783,"context_line":"        # NOTE(rajesht): The `delete_type` parameter is passed because"},{"line_number":784,"context_line":"        # the method signature has to match with `terminate_instance()`"},{"line_number":785,"context_line":"        # method of cells rpcapi."},{"line_number":786,"context_line":"        version \u003d \u00274.0\u0027"},{"line_number":787,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":788,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_50d27c5d","line":785,"updated":"2015-07-01 10:45:04.000000000","message":"\u003d\u003e to match with the method `terminate_instance()` of cells rpcapi.","commit_id":"580e8f6a5e8721b0535ea5fb1d414f6e9ede3070"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"20ff71c9edb319d40180429ee239582b2269e93e","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                version\u003dversion)"},{"line_number":789,"context_line":"        cctxt.cast(ctxt, \u0027terminate_instance\u0027,"},{"line_number":790,"context_line":"                   instance\u003dinstance, bdms\u003dbdms,"},{"line_number":791,"context_line":"                   reservations\u003dreservations)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def unpause_instance(self, ctxt, instance):"},{"line_number":794,"context_line":"        version \u003d \u00274.0\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_66a35c50","line":791,"updated":"2015-07-01 03:38:24.000000000","message":"not sure why not pass parameter delete_type here","commit_id":"580e8f6a5e8721b0535ea5fb1d414f6e9ede3070"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"4dabe8129a551ede01e82711befaca4542ad3285","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                version\u003dversion)"},{"line_number":789,"context_line":"        cctxt.cast(ctxt, \u0027terminate_instance\u0027,"},{"line_number":790,"context_line":"                   instance\u003dinstance, bdms\u003dbdms,"},{"line_number":791,"context_line":"                   reservations\u003dreservations)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def unpause_instance(self, ctxt, instance):"},{"line_number":794,"context_line":"        version \u003d \u00274.0\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_9cba6422","line":791,"in_reply_to":"ba3cc151_1510704d","updated":"2015-07-01 10:45:04.000000000","message":"I get it, \u0027delete_type\u0027 is only used on the API side, isn\u0027t it?","commit_id":"580e8f6a5e8721b0535ea5fb1d414f6e9ede3070"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"a22d2d8216a41eafd2f864c6fdda1d6367959378","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                version\u003dversion)"},{"line_number":789,"context_line":"        cctxt.cast(ctxt, \u0027terminate_instance\u0027,"},{"line_number":790,"context_line":"                   instance\u003dinstance, bdms\u003dbdms,"},{"line_number":791,"context_line":"                   reservations\u003dreservations)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def unpause_instance(self, ctxt, instance):"},{"line_number":794,"context_line":"        version \u003d \u00274.0\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_1510704d","line":791,"in_reply_to":"ba3cc151_66a35c50","updated":"2015-07-01 06:27:30.000000000","message":"It is passed in compute/rpcapi terminate instance method, just to match the signature with cells/rpcapi terminate_instance method.\n\nThere is no need to pass it to compute terminate_instance method, as that call will be executed on destination host itself where instance is running.","commit_id":"580e8f6a5e8721b0535ea5fb1d414f6e9ede3070"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"c00f56023d6bc884fa57da20de9591188d6bbb6e","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                version\u003dversion)"},{"line_number":789,"context_line":"        cctxt.cast(ctxt, \u0027terminate_instance\u0027,"},{"line_number":790,"context_line":"                   instance\u003dinstance, bdms\u003dbdms,"},{"line_number":791,"context_line":"                   reservations\u003dreservations)"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    def unpause_instance(self, ctxt, instance):"},{"line_number":794,"context_line":"        version \u003d \u00274.0\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba3cc151_73322a61","line":791,"in_reply_to":"ba3cc151_9cba6422","updated":"2015-07-01 11:15:54.000000000","message":"yes, its only to match the signature of terminate_instance on api side.","commit_id":"580e8f6a5e8721b0535ea5fb1d414f6e9ede3070"}],"nova/tests/unit/cells/test_cells_rpcapi.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1a0e4437441227b9d7e67eed64bb947958c63072","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        expected_args \u003d {\u0027instance\u0027: \u0027fake-instance\u0027,"},{"line_number":650,"context_line":"                         \u0027delete_type\u0027: \u0027delete\u0027}"},{"line_number":651,"context_line":"        self._check_result(call_info, \u0027terminate_instance\u0027,"},{"line_number":652,"context_line":"                           expected_args, version\u003d\u00271.35\u0027)"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def test_soft_delete_instance(self):"},{"line_number":655,"context_line":"        call_info \u003d self._stub_rpc_method(\u0027cast\u0027, None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aaa499b_85c70145","line":652,"updated":"2015-04-11 06:11:31.000000000","message":"Note: We could be more thorough here by checking that result has expected_args of instance for version 1.18 and expected_args of instance and delete_type for 1.35. But I don\u0027t see other tests in this file doing that, so this is just a note.","commit_id":"11284a6edcdf8c77c3f854c04bdbfddfcddbd08a"}],"nova/tests/unit/compute/test_compute_cells.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dbbbb68102c9290dccb74a613a600c9f673ee1ab","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    def test_error_evacuate(self):"},{"line_number":143,"context_line":"        self.skipTest(\"Test is incompatible with cells.\")"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_force_delete_instance_no_cell(self):"},{"line_number":146,"context_line":"        cells_rpcapi \u003d self.compute_api.cells_rpcapi"},{"line_number":147,"context_line":"        self.mox.StubOutWithMock(cells_rpcapi,"},{"line_number":148,"context_line":"                                 \u0027instance_delete_everywhere\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b6c61c98","line":145,"updated":"2014-11-18 12:44:34.000000000","message":"please use mock for new tests","commit_id":"83aa1dec13d526fc47815cab3d5c3784b2051caf"}]}
