)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"context that should be used. It currently mutates the input context,"},{"line_number":11,"context_line":"which means you don\u0027t have to actually use the yielded one, because"},{"line_number":12,"context_line":"we have a lot of stuff that would break otherwise. This fixes all the"},{"line_number":13,"context_line":"current uses of it to be proper, and adjusts tests accordingly. This"},{"line_number":14,"context_line":"is separate from changing target_cell\u0027s behavior to not mutate the"},{"line_number":15,"context_line":"input context specifically to isolate the mechanical changes from ones"},{"line_number":16,"context_line":"that actually need different behavior."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Related to blueprint cells-aware-api"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff0f0b1f_feb52b7f","line":16,"range":{"start_line":13,"start_character":64,"end_line":16,"end_character":38},"updated":"2017-05-22 19:55:13.000000000","message":"Which happens in the change change in the series yeah?\n\nIccdf6b80f5fc8adcc8a89ce6ece3f37b6cbcaee2\n\nSo this is basically all prep work.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"}],"nova/compute/api.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":1791,"context_line":"                if instance is not None:"},{"line_number":1792,"context_line":"                    # If instance is None it has already been deleted."},{"line_number":1793,"context_line":"                    if cell:"},{"line_number":1794,"context_line":"                        with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1795,"context_line":"                            with instance.obj_alternate_context(cctxt):"},{"line_number":1796,"context_line":"                                with ("},{"line_number":1797,"context_line":"                                    compute_utils.notify_about_instance_delete("},{"line_number":1798,"context_line":"                                        self.notifier, cctxt, instance)):"},{"line_number":1799,"context_line":"                                    instance.destroy()"},{"line_number":1800,"context_line":"                    else:"},{"line_number":1801,"context_line":"                        instance.destroy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_ca5d2dea","line":1798,"range":{"start_line":1794,"start_character":0,"end_line":1798,"end_character":73},"updated":"2017-04-26 14:44:39.000000000","message":"Note that with your next patch (I assume, haven\u0027t looked yet), this whole messy dance becomes unnecessary because the instance returned by _lookup_instance already has a context targeting the correct cell.","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":1867,"context_line":""},{"line_number":1868,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1869,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1870,"context_line":"                    with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1871,"context_line":"                        # If the instance has the targeted context in it then"},{"line_number":1872,"context_line":"                        # we don\u0027t need the context manager."},{"line_number":1873,"context_line":"                        with instance.obj_alternate_context(cctxt):"},{"line_number":1874,"context_line":"                            quota_flavor \u003d self._get_flavor_for_reservation("},{"line_number":1875,"context_line":"                                instance)"},{"line_number":1876,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_eab6a9fa","line":1873,"range":{"start_line":1870,"start_character":0,"end_line":1873,"end_character":67},"updated":"2017-04-26 14:44:39.000000000","message":"Ditto","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":1882,"context_line":""},{"line_number":1883,"context_line":"                    try:"},{"line_number":1884,"context_line":"                        # Now destroy the instance from the cell it lives in."},{"line_number":1885,"context_line":"                        with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1886,"context_line":"                            # If the instance has the targeted context in it"},{"line_number":1887,"context_line":"                            # then we don\u0027t need the context manager."},{"line_number":1888,"context_line":"                            with instance.obj_alternate_context(cctxt):"},{"line_number":1889,"context_line":"                                with ("},{"line_number":1890,"context_line":"                                    compute_utils.notify_about_instance_delete("},{"line_number":1891,"context_line":"                                        self.notifier, context, instance)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_ca876d0f","line":1888,"range":{"start_line":1885,"start_character":0,"end_line":1888,"end_character":71},"updated":"2017-04-26 14:44:39.000000000","message":"Ditto","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":1897,"context_line":"                            quotas.commit()"},{"line_number":1898,"context_line":"                    except exception.InstanceNotFound:"},{"line_number":1899,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1900,"context_line":"                        # we can remove this targeting."},{"line_number":1901,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1902,"context_line":"                            quotas.rollback()"},{"line_number":1903,"context_line":"                    # The instance was deleted or is already gone."}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_8a9e0552","line":1900,"updated":"2017-04-26 14:44:39.000000000","message":"+1","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":2401,"context_line":"                                                expected_attrs\u003dexpected_attrs)"},{"line_number":2402,"context_line":"        inst_map \u003d self._get_instance_map_or_none(context, instance_uuid)"},{"line_number":2403,"context_line":"        if inst_map and (inst_map.cell_mapping is not None):"},{"line_number":2404,"context_line":"            nova_context.set_target_cell(context, inst_map.cell_mapping)"},{"line_number":2405,"context_line":"            instance \u003d objects.Instance.get_by_uuid("},{"line_number":2406,"context_line":"                context, instance_uuid, expected_attrs\u003dexpected_attrs)"},{"line_number":2407,"context_line":"        elif inst_map and (inst_map.cell_mapping is None):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_ad779bd4","line":2404,"updated":"2017-04-26 14:44:39.000000000","message":"I think you should also fix this. This is a really bizarre side effect with tentacles reaching into other modules.\n\nPersonally I think set_target_cell should be a private method somewhere. If we want to explicitly target a single cell we can do that cleanly and obviously by having the parent create the cell context explicitly, and then pass only the cell context into a method.\n\nRight now anybody looking at, for example,  https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L896 is going to have a hell of time working out how the api context fetched from the request became a cell targetted context by the end of the method. That\u0027s because it\u0027s a side-effect of _get_server which calls the common module, which calls this method in this module.\n\nI appreciate that\u0027s a messy web to untangle, but it\u0027s only going to get worse.","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"1755f2fdaeb37d9d589ca85492695156d9f1ab52","unresolved":false,"context_lines":[{"line_number":2709,"context_line":"            # look up the instance in the cell database"},{"line_number":2710,"context_line":"            if inst_map and (inst_map.cell_mapping is not None) and ("},{"line_number":2711,"context_line":"                    not CONF.cells.enable):"},{"line_number":2712,"context_line":"                with nova_context.target_cell(context,"},{"line_number":2713,"context_line":"                                              inst_map.cell_mapping) as cctxt:"},{"line_number":2714,"context_line":"                    with instance.obj_alternate_context(cctxt):"},{"line_number":2715,"context_line":"                        instance.save()"},{"line_number":2716,"context_line":"            else:"},{"line_number":2717,"context_line":"                # If inst_map.cell_mapping does not point at a cell then cell"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_8a23a505","line":2714,"range":{"start_line":2712,"start_character":0,"end_line":2714,"end_character":63},"updated":"2017-04-26 14:44:39.000000000","message":"The instance passed here ultimately came from compute_api.get(). Once we\u0027ve updated that not to use set_target_cell, this also becomes redundant.","commit_id":"1bc58d4d30a9969b4c77379488043017931c8051"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"73d3a009d23fe7c215ea44b1add5a20363d5c64c","unresolved":false,"context_lines":[{"line_number":1888,"context_line":"                            with instance.obj_alternate_context(cctxt):"},{"line_number":1889,"context_line":"                                with ("},{"line_number":1890,"context_line":"                                    compute_utils.notify_about_instance_delete("},{"line_number":1891,"context_line":"                                        self.notifier, context, instance)):"},{"line_number":1892,"context_line":"                                    instance.destroy()"},{"line_number":1893,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1894,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_bd56f405","line":1891,"updated":"2017-05-04 20:29:55.000000000","message":"You\u0027re passing context above, not cctxt. Based on your change on line 1798, I presume this should be cctxt.","commit_id":"8d7775f47c75a02e88b4f6583b9ac4c96fcef359"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":1799,"context_line":"                    # If instance is None it has already been deleted."},{"line_number":1800,"context_line":"                    if cell:"},{"line_number":1801,"context_line":"                        with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1802,"context_line":"                            with instance.obj_alternate_context(cctxt):"},{"line_number":1803,"context_line":"                                with ("},{"line_number":1804,"context_line":"                                    compute_utils.notify_about_instance_delete("},{"line_number":1805,"context_line":"                                        self.notifier, cctxt, instance)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_5eebf7da","line":1802,"range":{"start_line":1802,"start_character":28,"end_line":1802,"end_character":71},"updated":"2017-05-22 19:55:13.000000000","message":"Why is this needed here and below?","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":1877,"context_line":"                    with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1878,"context_line":"                        # If the instance has the targeted context in it then"},{"line_number":1879,"context_line":"                        # we don\u0027t need the context manager."},{"line_number":1880,"context_line":"                        with instance.obj_alternate_context(cctxt):"},{"line_number":1881,"context_line":"                            quota_flavor \u003d self._get_flavor_for_reservation("},{"line_number":1882,"context_line":"                                instance)"},{"line_number":1883,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_1ea8df8a","line":1880,"range":{"start_line":1880,"start_character":24,"end_line":1880,"end_character":67},"updated":"2017-05-22 19:55:13.000000000","message":"And here. Is this related to how getting the instance initially is going to stash a targeted context on it? If so, we should either have a comment in here explaining it I think, or I\u0027d think we could remove this targeting, that\u0027s why it says:\n\n# If the instance has the targeted context in it then\n# we don\u0027t need the context manager.\n\nI think I put that in there because we needed it for a backport to ocata where we didn\u0027t store the targeted context in the instance when we got it initially.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":1877,"context_line":"                    with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1878,"context_line":"                        # If the instance has the targeted context in it then"},{"line_number":1879,"context_line":"                        # we don\u0027t need the context manager."},{"line_number":1880,"context_line":"                        with instance.obj_alternate_context(cctxt):"},{"line_number":1881,"context_line":"                            quota_flavor \u003d self._get_flavor_for_reservation("},{"line_number":1882,"context_line":"                                instance)"},{"line_number":1883,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_e148ea87","line":1880,"range":{"start_line":1880,"start_character":24,"end_line":1880,"end_character":67},"in_reply_to":"ff0f0b1f_1ea8df8a","updated":"2017-05-22 20:42:01.000000000","message":"I guess since we are under the \"if cell and instance\" heading then we *should* have our own targeted context once we do the next patch. We can\u0027t remove the target until after that, but .. maybe we can remove this.\n\nI rarely go change all instances of a pattern without seeing a test that fails because of it, so I\u0027m kinda skeptical, but I\u0027ll try and see.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"                        with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1893,"context_line":"                            # If the instance has the targeted context in it"},{"line_number":1894,"context_line":"                            # then we don\u0027t need the context manager."},{"line_number":1895,"context_line":"                            with instance.obj_alternate_context(cctxt):"},{"line_number":1896,"context_line":"                                with ("},{"line_number":1897,"context_line":"                                    compute_utils.notify_about_instance_delete("},{"line_number":1898,"context_line":"                                        self.notifier, context, instance)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_fea88b8c","line":1895,"range":{"start_line":1895,"start_character":28,"end_line":1895,"end_character":71},"updated":"2017-05-22 19:55:13.000000000","message":"And here.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"                                        self.notifier, context, instance)):"},{"line_number":1899,"context_line":"                                    instance.destroy()"},{"line_number":1900,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1901,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1902,"context_line":"                        # we can remove this targeting."},{"line_number":1903,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1904,"context_line":"                            quotas.commit()"},{"line_number":1905,"context_line":"                    except exception.InstanceNotFound:"},{"line_number":1906,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1907,"context_line":"                        # we can remove this targeting."},{"line_number":1908,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1909,"context_line":"                            quotas.rollback()"},{"line_number":1910,"context_line":"                    # The instance was deleted or is already gone."},{"line_number":1911,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_be7fb313","line":1908,"range":{"start_line":1901,"start_character":0,"end_line":1908,"end_character":78},"updated":"2017-05-22 19:55:13.000000000","message":"I don\u0027t understand what these notes mean - should they be todos? The cctxt isn\u0027t used.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"                                        self.notifier, context, instance)):"},{"line_number":1899,"context_line":"                                    instance.destroy()"},{"line_number":1900,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1901,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1902,"context_line":"                        # we can remove this targeting."},{"line_number":1903,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1904,"context_line":"                            quotas.commit()"},{"line_number":1905,"context_line":"                    except exception.InstanceNotFound:"},{"line_number":1906,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1907,"context_line":"                        # we can remove this targeting."},{"line_number":1908,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1909,"context_line":"                            quotas.rollback()"},{"line_number":1910,"context_line":"                    # The instance was deleted or is already gone."},{"line_number":1911,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_01e87e79","line":1908,"range":{"start_line":1901,"start_character":0,"end_line":1908,"end_character":78},"in_reply_to":"ff0f0b1f_be7fb313","updated":"2017-05-22 20:42:01.000000000","message":"They are removed in the delete cleanup patch:\n\nhttps://review.openstack.org/#/c/458636/13/nova/compute/api.py","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":2722,"context_line":"            # look up the instance in the cell database"},{"line_number":2723,"context_line":"            if inst_map and (inst_map.cell_mapping is not None) and ("},{"line_number":2724,"context_line":"                    not CONF.cells.enable):"},{"line_number":2725,"context_line":"                with nova_context.target_cell(context,"},{"line_number":2726,"context_line":"                                              inst_map.cell_mapping) as cctxt:"},{"line_number":2727,"context_line":"                    with instance.obj_alternate_context(cctxt):"},{"line_number":2728,"context_line":"                        instance.save()"},{"line_number":2729,"context_line":"            else:"},{"line_number":2730,"context_line":"                # If inst_map.cell_mapping does not point at a cell then cell"},{"line_number":2731,"context_line":"                # migration has not happened yet."}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_9ef86f7b","line":2728,"range":{"start_line":2725,"start_character":16,"end_line":2728,"end_character":39},"updated":"2017-05-22 19:55:13.000000000","message":"Is this even needed anymore? Isn\u0027t the instance at this point already targeted when calling _get_instance?","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":2722,"context_line":"            # look up the instance in the cell database"},{"line_number":2723,"context_line":"            if inst_map and (inst_map.cell_mapping is not None) and ("},{"line_number":2724,"context_line":"                    not CONF.cells.enable):"},{"line_number":2725,"context_line":"                with nova_context.target_cell(context,"},{"line_number":2726,"context_line":"                                              inst_map.cell_mapping) as cctxt:"},{"line_number":2727,"context_line":"                    with instance.obj_alternate_context(cctxt):"},{"line_number":2728,"context_line":"                        instance.save()"},{"line_number":2729,"context_line":"            else:"},{"line_number":2730,"context_line":"                # If inst_map.cell_mapping does not point at a cell then cell"},{"line_number":2731,"context_line":"                # migration has not happened yet."}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_e1a10a48","line":2728,"range":{"start_line":2725,"start_character":16,"end_line":2728,"end_character":39},"in_reply_to":"ff0f0b1f_9ef86f7b","updated":"2017-05-22 20:42:01.000000000","message":"We\u0027re looking up the instance mapping on L2720, so.. yes?","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9134ab6b88eab8b06d3b2ece552e5afe4c0b00d4","unresolved":false,"context_lines":[{"line_number":2722,"context_line":"            # look up the instance in the cell database"},{"line_number":2723,"context_line":"            if inst_map and (inst_map.cell_mapping is not None) and ("},{"line_number":2724,"context_line":"                    not CONF.cells.enable):"},{"line_number":2725,"context_line":"                with nova_context.target_cell(context,"},{"line_number":2726,"context_line":"                                              inst_map.cell_mapping) as cctxt:"},{"line_number":2727,"context_line":"                    with instance.obj_alternate_context(cctxt):"},{"line_number":2728,"context_line":"                        instance.save()"},{"line_number":2729,"context_line":"            else:"},{"line_number":2730,"context_line":"                # If inst_map.cell_mapping does not point at a cell then cell"},{"line_number":2731,"context_line":"                # migration has not happened yet."}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_f3867913","line":2728,"range":{"start_line":2725,"start_character":16,"end_line":2728,"end_character":39},"in_reply_to":"ff0f0b1f_e1a10a48","updated":"2017-05-23 02:57:31.000000000","message":"I think that\u0027s all super old and can be cleaned up, but we could do it separately. When we got the instance for the update it would have already been targeted to the cell it\u0027s in via _get_instance. We likely have a shitload of code like this that was transitional which we need to unwind.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f88279c74d227f0b94311bdbe9093237f613297","unresolved":false,"context_lines":[{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1876,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1877,"context_line":"                    with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1878,"context_line":"                        # FIXME: If the instance has the targeted context in"},{"line_number":1879,"context_line":"                        # it then we don\u0027t need the context manager."},{"line_number":1880,"context_line":"                        quota_flavor \u003d self._get_flavor_for_reservation("},{"line_number":1881,"context_line":"                            instance)"},{"line_number":1882,"context_line":""},{"line_number":1883,"context_line":"                    with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1884,"context_line":"                        # This is confusing but actually decrements quota usage"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_9c53be39","line":1881,"range":{"start_line":1877,"start_character":20,"end_line":1881,"end_character":37},"updated":"2017-05-23 13:30:12.000000000","message":"I\u0027m not sure why we\u0027re even targeting here, as we\u0027re not using the targeted context in the call to _get_flavor_for_reservation. In this case though, I don\u0027t think the instance._context is targeted as it didn\u0027t come from the _get_instance method. I\u0027m a bit puzzled as to how this even works, and I think I added this. Maybe it\u0027s because we targeted the same context that was used in _lookup_instance and so when we target it here, it\u0027s modifying instance._context by reference?","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3597bc3b9cbe1bbdc89d1b15b18d3b35a9d4c456","unresolved":false,"context_lines":[{"line_number":1874,"context_line":""},{"line_number":1875,"context_line":"                    # We have to get the flavor from the instance while the"},{"line_number":1876,"context_line":"                    # context is still targeted to where the instance lives."},{"line_number":1877,"context_line":"                    with nova_context.target_cell(context, cell) as cctxt:"},{"line_number":1878,"context_line":"                        # FIXME: If the instance has the targeted context in"},{"line_number":1879,"context_line":"                        # it then we don\u0027t need the context manager."},{"line_number":1880,"context_line":"                        quota_flavor \u003d self._get_flavor_for_reservation("},{"line_number":1881,"context_line":"                            instance)"},{"line_number":1882,"context_line":""},{"line_number":1883,"context_line":"                    with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1884,"context_line":"                        # This is confusing but actually decrements quota usage"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_724ed16f","line":1881,"range":{"start_line":1877,"start_character":20,"end_line":1881,"end_character":37},"in_reply_to":"ff0f0b1f_9c53be39","updated":"2017-05-23 13:54:51.000000000","message":"Because until the next patch, we\u0027re still switching global context here, which is the thing that is in the instance. Since that context was not already targeted (_lookup_instance() does not leave the object context targeted until the next patch) we still need to switch it here.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f88279c74d227f0b94311bdbe9093237f613297","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"                            # If the instance has the targeted context in it"},{"line_number":1893,"context_line":"                            # then we don\u0027t need the context manager."},{"line_number":1894,"context_line":"                            with compute_utils.notify_about_instance_delete("},{"line_number":1895,"context_line":"                                    self.notifier, context, instance):"},{"line_number":1896,"context_line":"                                instance.destroy()"},{"line_number":1897,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1898,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_f73c13c9","line":1895,"range":{"start_line":1895,"start_character":51,"end_line":1895,"end_character":58},"updated":"2017-05-23 13:30:12.000000000","message":"Shouldn\u0027t this be cctxt?","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3597bc3b9cbe1bbdc89d1b15b18d3b35a9d4c456","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"                            # If the instance has the targeted context in it"},{"line_number":1893,"context_line":"                            # then we don\u0027t need the context manager."},{"line_number":1894,"context_line":"                            with compute_utils.notify_about_instance_delete("},{"line_number":1895,"context_line":"                                    self.notifier, context, instance):"},{"line_number":1896,"context_line":"                                instance.destroy()"},{"line_number":1897,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1898,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_d23ebdb6","line":1895,"range":{"start_line":1895,"start_character":51,"end_line":1895,"end_character":58},"in_reply_to":"ff0f0b1f_f73c13c9","updated":"2017-05-23 13:54:51.000000000","message":"Yes.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f88279c74d227f0b94311bdbe9093237f613297","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"                                    self.notifier, context, instance):"},{"line_number":1896,"context_line":"                                instance.destroy()"},{"line_number":1897,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1898,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1899,"context_line":"                        # we can remove this targeting."},{"line_number":1900,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1901,"context_line":"                            quotas.commit()"},{"line_number":1902,"context_line":"                    except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_77ea430f","line":1899,"range":{"start_line":1898,"start_character":24,"end_line":1899,"end_character":55},"updated":"2017-05-23 13:30:12.000000000","message":"This seems like a chicken and egg - when target_cell does something else, we can remove it - so why do we care about when it can do something else?","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3597bc3b9cbe1bbdc89d1b15b18d3b35a9d4c456","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"                                    self.notifier, context, instance):"},{"line_number":1896,"context_line":"                                instance.destroy()"},{"line_number":1897,"context_line":"                        # Now commit the quota reservation to decrement usage."},{"line_number":1898,"context_line":"                        # NOTE(danms): When target_cell yields a context copy,"},{"line_number":1899,"context_line":"                        # we can remove this targeting."},{"line_number":1900,"context_line":"                        with nova_context.target_cell(context, None) as cctxt:"},{"line_number":1901,"context_line":"                            quotas.commit()"},{"line_number":1902,"context_line":"                    except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_729c91bf","line":1899,"range":{"start_line":1898,"start_character":24,"end_line":1899,"end_character":55},"in_reply_to":"ff0f0b1f_77ea430f","updated":"2017-05-23 13:54:51.000000000","message":"Because we\u0027re still switching global context in this patch, we\u0027re just setting up the calling convention so that if we stored a targeted context in quotas on L1885 after this patch, then we no longer have to target here.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"}],"nova/conductor/manager.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"73d3a009d23fe7c215ea44b1add5a20363d5c64c","unresolved":false,"context_lines":[{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def _bury_in_cell0(self, context, request_spec, exc,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_dd51c010","line":847,"updated":"2017-05-04 20:29:55.000000000","message":"This seems like it\u0027s a functional change unrelated to the ostensible purpose of this patch? Perhaps good to leave this to a different patch so if bugs occur we can isolate to this specific change?","commit_id":"8d7775f47c75a02e88b4f6583b9ac4c96fcef359"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"40a95d50b394cd2f91d28c6f27bb7f5e5ae8f57a","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        for bdm in instance_block_device_mapping:"},{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_c114c646","line":846,"updated":"2017-05-22 19:59:58.000000000","message":"As Jay pointed out before, this seems unrelated and should be done separately.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        for bdm in instance_block_device_mapping:"},{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_0c06751e","line":846,"in_reply_to":"ff0f0b1f_c114c646","updated":"2017-05-22 20:42:01.000000000","message":"I don\u0027t feel like it\u0027s unrelated. The point of this patch is to be using the right calling convention so we can apply the next patch. This is effectively the same as what we\u0027re doing in compute api, but we have a helper here in this module. See the change on L208 which brings that and the following calls into line.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"095cfee96357702a00558186d8fa2ef215c86617","unresolved":false,"context_lines":[{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def _bury_in_cell0(self, context, request_spec, exc,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_75efe61d","line":847,"updated":"2017-05-23 09:27:57.000000000","message":"Looks good to me, but unrelated to that change, right? AFAICU, we need to create the BDMS in the cell DB anyway for sure.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d8eeb6a016a00581e82f61cf39ee124e00c2abe","unresolved":false,"context_lines":[{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def _bury_in_cell0(self, context, request_spec, exc,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_f449aeb6","line":847,"in_reply_to":"ff0f0b1f_1ca1ee46","updated":"2017-05-23 14:34:27.000000000","message":"As discussed in IRC, I\u0027m OK with doing this here as long as it\u0027s pointed out in the commit message, because three cores had to ask about it, so it\u0027s not obvious.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d52b806b848f2f9e09119734dae20493a96ed2a2","unresolved":false,"context_lines":[{"line_number":844,"context_line":"            bdm.volume_size \u003d self._volume_size(instance_type, bdm)"},{"line_number":845,"context_line":"            bdm.instance_uuid \u003d instance_uuid"},{"line_number":846,"context_line":"            with obj_target_cell(bdm, cell):"},{"line_number":847,"context_line":"                bdm.update_or_create()"},{"line_number":848,"context_line":"        return instance_block_device_mapping"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def _bury_in_cell0(self, context, request_spec, exc,"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_1ca1ee46","line":847,"in_reply_to":"ff0f0b1f_75efe61d","updated":"2017-05-23 13:18:15.000000000","message":"This was already pointed out a few times in earlier patch sets. I still don\u0027t understand why it\u0027s needed, unless it\u0027s going to fail w/o this in later changes in the series, but I think I\u0027d rather see it changed where it\u0027s needed if that\u0027s the case.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"}],"nova/objects/host_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_7e4d9bc2","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"updated":"2017-05-22 19:55:13.000000000","message":"Why aren\u0027t you using cctxt here? I guess because that\u0027s targeted at the cell and we need to create the host mappings in the API DB. Confusing.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_ec1fc158","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"in_reply_to":"ff0f0b1f_7e4d9bc2","updated":"2017-05-22 20:42:01.000000000","message":"No, it should be cctxt I think. We just likely don\u0027t hit this in devstack so it didn\u0027t shake out.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9134ab6b88eab8b06d3b2ece552e5afe4c0b00d4","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_33e4f1e0","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"in_reply_to":"ff0f0b1f_ec1fc158","updated":"2017-05-23 02:57:31.000000000","message":"OK, well I guess the API DB connection for the host_mappings is going to be the same either way, so maybe it doesn\u0027t matter. This is hurting my brain to think about this.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7f88279c74d227f0b94311bdbe9093237f613297","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_d748ef2d","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"updated":"2017-05-23 13:30:12.000000000","message":"So you didn\u0027t change this, but like I said in PS12, I think it doesn\u0027t matter here because this is using the API DB connection, which is going to be the same regardless of the targeted cctxt. But I\u0027m checking my understanding.","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d8eeb6a016a00581e82f61cf39ee124e00c2abe","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_9459528f","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"in_reply_to":"ff0f0b1f_b2b58934","updated":"2017-05-23 14:34:27.000000000","message":"This is Dan speak for \"yes I\u0027m going to change it, but wanted to see what else would break first.\"","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3597bc3b9cbe1bbdc89d1b15b18d3b35a9d4c456","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":225,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"},{"line_number":226,"context_line":"                       \u0027uuid\u0027: cm.uuid})"},{"line_number":227,"context_line":"            added_hm \u003d _check_and_create_host_mappings(ctxt, cm, compute_nodes,"},{"line_number":228,"context_line":"                                                       status_fn)"},{"line_number":229,"context_line":"            host_mappings.extend(added_hm)"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0f0b1f_b2b58934","line":227,"range":{"start_line":227,"start_character":55,"end_line":227,"end_character":59},"in_reply_to":"ff0f0b1f_d748ef2d","updated":"2017-05-23 13:54:51.000000000","message":"Like I said in IRC, I only changed the compute_api obj_context things as a test to make sure they were kosher before I did the other stuff. I wanted to limit the things I was testing in case it failed since this is fairly complex stuff to unwind when something breaks :)","commit_id":"0a64f52bb2eacd48c835f96105704f46bcc0ca8f"}],"nova/tests/unit/api/openstack/compute/test_server_groups.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbeed6f8e91fa02afbb860f3fa49da09d2deff9a","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        im \u003d objects.InstanceMapping.get_by_instance_uuid(ctx,"},{"line_number":337,"context_line":"                                                          instances[1].uuid)"},{"line_number":338,"context_line":"        with context.target_cell(ctx, im.cell_mapping) as cctxt:"},{"line_number":339,"context_line":"            instances[1]._context \u003d cctxt"},{"line_number":340,"context_line":"            instances[1].destroy()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # check that the instance does not exist"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_1e9c5f0d","line":339,"range":{"start_line":339,"start_character":12,"end_line":339,"end_character":41},"updated":"2017-05-22 19:55:13.000000000","message":"Seems you\u0027d normally want to use obj_alternate_context here right?","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6a490cab7146bd96c31995a65a61748a8bb78684","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        im \u003d objects.InstanceMapping.get_by_instance_uuid(ctx,"},{"line_number":337,"context_line":"                                                          instances[1].uuid)"},{"line_number":338,"context_line":"        with context.target_cell(ctx, im.cell_mapping) as cctxt:"},{"line_number":339,"context_line":"            instances[1]._context \u003d cctxt"},{"line_number":340,"context_line":"            instances[1].destroy()"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        # check that the instance does not exist"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_8c3a85c9","line":339,"range":{"start_line":339,"start_character":12,"end_line":339,"end_character":41},"in_reply_to":"ff0f0b1f_1e9c5f0d","updated":"2017-05-22 20:42:01.000000000","message":"Sure.","commit_id":"be2bc3caba2faaaacde0a7ce034e3524d96330e1"}]}
