)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4106467e060a39626d9eccce35df7542e6c84ed7","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        except exception.MigrationNotFound:"},{"line_number":883,"context_line":"            msg \u003d _(\"Instance has not been resized.\")"},{"line_number":884,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":885,"context_line":"        except (exception.InstanceIsLocked,"},{"line_number":886,"context_line":"                exception.ServiceUnavailable) as e:"},{"line_number":887,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":888,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":889,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_55115baf","line":886,"range":{"start_line":885,"start_character":8,"end_line":886,"end_character":51},"updated":"2020-07-17 13:33:46.000000000","message":"style nit:\n\n  except (\n      exception.InstanceIsLocked,\n      exception.ServiceUnavailable,\n  ) as e:\n\nwraps nicer and looks less ugly at this list expands (I need to touch this for vTPM too)","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"898b75b91458ab7cc2f2069f0e4b233f9592b437","unresolved":false,"context_lines":[{"line_number":882,"context_line":"        except exception.MigrationNotFound:"},{"line_number":883,"context_line":"            msg \u003d _(\"Instance has not been resized.\")"},{"line_number":884,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":885,"context_line":"        except (exception.InstanceIsLocked,"},{"line_number":886,"context_line":"                exception.ServiceUnavailable) as e:"},{"line_number":887,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":888,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":889,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_695aa783","line":886,"range":{"start_line":885,"start_character":8,"end_line":886,"end_character":51},"in_reply_to":"bf51134e_55115baf","updated":"2020-07-21 09:47:46.000000000","message":"Done","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"}],"nova/compute/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4106467e060a39626d9eccce35df7542e6c84ed7","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_d5856bb0","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"updated":"2020-07-17 13:33:46.000000000","message":"This seems to be near identical to \u0027HostAPI.service_get_by_compute_host\u0027 (accessible from API via \u0027self.host_api\u0027) and \u0027_get_service_in_cell_by_host\u0027, the latter of which has built-in error handling. Can we call one of these with \u0027migration.source_compute\u0027 instead?","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3e9bccc27d310a0b93f4dfba33e47172e2557d7a","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_2ba27a9b","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"in_reply_to":"bf51134e_0ff7845b","updated":"2020-07-27 16:26:16.000000000","message":"\u003e That said target_cell is also recreating the provided context while\n \u003e targeting it:\n \u003e \n \u003e https://github.com/openstack/nova/blob/97b0d251f7a5cc90d5a99a70499e57b1ae816b14/nova/context.py#L385-L392\n \u003e \n \u003e That might be a possible reason to use this approach here and\n \u003e elsewhere over set_target_cell.\n\nYup, that\u0027s what I meant by this bit\n\n \u003e ... The key difference seems to be that the first mutates\n \u003e our existing context, while the latter creates a new one. If that\u0027s\n \u003e an issue though, I\u0027d suspect everything should be changed to use\n \u003e the context manager approach?\n\nI think that comment is still valid. If there\u0027s a good reason to clone the context in this case, does that reason not also apply elsewhere, i.e. in those two existing functions. If there is not a good reason to close, let\u0027s just use the existing functions?","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8a422c8c0d1685000bf195b0bccc9f68927f7f07","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_ef48775d","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"in_reply_to":"bf51134e_ac6a0d18","updated":"2020-07-21 10:50:46.000000000","message":"\u003e *After coffee*\n \u003e \n \u003e Actually, _get_service_in_cell_by_host isn\u0027t the same, while it\n \u003e does target the cell we don\u0027t use the provided context when\n \u003e fetching the service.\n\nIt doesn\u0027t? I thought these are essentially equivalent for our purposes.\n\n  nova_context.set_target_cell(context, mapping.cell_mapping)\n  service \u003d objects.Service.get_by_compute_host(context, host_name)\n\nfrom \u0027_get_service_in_cell_by_host\u0027, vs.\n\n  with nova_context.target_cell(context, hm.cell_mapping) as cctxt:\n      return objects.Service.get_by_compute_host(\n          cctxt, migration.source_compute)\n\nfrom here. The key difference seems to be that the first mutates our existing context, while the latter creates a new one. If that\u0027s an issue though, I\u0027d suspect everything should be changed to use the context manager approach?\n\n \u003e _get_by_compute_host is also just a wrapper around\n \u003e objects.Service.get_by_compute_host so I\u0027m not sure that it\u0027s worth\n \u003e calling here tbh.\n\nAgain, that\u0027s using the target_host_cell decorator which works the same as the above.","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"122e57bcac3efee5eb7f84bad5b28ac9dc634886","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_ac6a0d18","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"in_reply_to":"bf51134e_d5856bb0","updated":"2020-07-21 10:06:59.000000000","message":"*After coffee*\n\nActually, _get_service_in_cell_by_host isn\u0027t the same, while it does target the cell we don\u0027t use the provided context when fetching the service.\n\n_get_by_compute_host is also just a wrapper around objects.Service.get_by_compute_host so I\u0027m not sure that it\u0027s worth calling here tbh.","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"898b75b91458ab7cc2f2069f0e4b233f9592b437","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_29938f02","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"in_reply_to":"bf51134e_d5856bb0","updated":"2020-07-21 09:47:46.000000000","message":"Done","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"32fe9d18a07ec5c1596dbd1b2311566681d8179c","unresolved":false,"context_lines":[{"line_number":3699,"context_line":"                                              reqspec)"},{"line_number":3700,"context_line":""},{"line_number":3701,"context_line":"    @staticmethod"},{"line_number":3702,"context_line":"    def _get_source_compute_service(context, migration):"},{"line_number":3703,"context_line":"        \"\"\"Find the source compute Service object given the Migration."},{"line_number":3704,"context_line":""},{"line_number":3705,"context_line":"        :param context: nova auth RequestContext target at the destination"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_0ff7845b","line":3702,"range":{"start_line":3702,"start_character":8,"end_line":3702,"end_character":35},"in_reply_to":"bf51134e_ef48775d","updated":"2020-07-22 20:08:10.000000000","message":"\u003e from here. The key difference seems to be that the first mutates\n \u003e our existing context, while the latter creates a new one. If that\u0027s\n \u003e an issue though, I\u0027d suspect everything should be changed to use\n \u003e the context manager approach?\n\n\nYeah apologies I didn\u0027t parse that correctly.\n\nThat said target_cell is also recreating the provided context while targeting it:\n\nhttps://github.com/openstack/nova/blob/97b0d251f7a5cc90d5a99a70499e57b1ae816b14/nova/context.py#L385-L392\n\nThat might be a possible reason to use this approach here and elsewhere over set_target_cell.\n\n \u003e Again, that\u0027s using the target_host_cell decorator which works the\n \u003e same as the above.\n\n\nGah, I also didn\u0027t parse that correctly.","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d1914346a062a4a9c2fe630eb44c7920d62bd220","unresolved":false,"context_lines":[{"line_number":3712,"context_line":"            # HostMapping to determine the source cell."},{"line_number":3713,"context_line":"            hm \u003d objects.HostMapping.get_by_host("},{"line_number":3714,"context_line":"                context, migration.source_compute)"},{"line_number":3715,"context_line":"            with nova_context.target_cell(context, hm.cell_mapping) as cctxt:"},{"line_number":3716,"context_line":"                return objects.Service.get_by_compute_host("},{"line_number":3717,"context_line":"                    cctxt, migration.source_compute)"},{"line_number":3718,"context_line":"        # Same-cell migration so just use the context we have."},{"line_number":3719,"context_line":"        return objects.Service.get_by_compute_host("}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_b46dabcd","line":3716,"range":{"start_line":3715,"start_character":12,"end_line":3716,"end_character":59},"updated":"2020-08-05 19:43:02.000000000","message":"target_cell yields a fresh targeted context here for use in the call to objects.Service.get_by_compute_host. Leaving context untargeted.","commit_id":"0ad33543babc241f75ef1a75dcd0f3c79135e8be"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d1914346a062a4a9c2fe630eb44c7920d62bd220","unresolved":false,"context_lines":[{"line_number":5405,"context_line":"    @functools.wraps(fn)"},{"line_number":5406,"context_line":"    def targeted(self, context, host, *args, **kwargs):"},{"line_number":5407,"context_line":"        mapping \u003d objects.HostMapping.get_by_host(context, host)"},{"line_number":5408,"context_line":"        nova_context.set_target_cell(context, mapping.cell_mapping)"},{"line_number":5409,"context_line":"        return fn(self, context, host, *args, **kwargs)"},{"line_number":5410,"context_line":"    return targeted"},{"line_number":5411,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_d4ac9fee","line":5408,"range":{"start_line":5408,"start_character":0,"end_line":5408,"end_character":67},"updated":"2020-08-05 19:43:02.000000000","message":"set_target_cell updates the provided context to target the cell defined in the given mapping.","commit_id":"0ad33543babc241f75ef1a75dcd0f3c79135e8be"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d1914346a062a4a9c2fe630eb44c7920d62bd220","unresolved":false,"context_lines":[{"line_number":5414,"context_line":"    # validates the host; ComputeHostNotFound is raised if invalid"},{"line_number":5415,"context_line":"    try:"},{"line_number":5416,"context_line":"        mapping \u003d objects.HostMapping.get_by_host(context, host_name)"},{"line_number":5417,"context_line":"        nova_context.set_target_cell(context, mapping.cell_mapping)"},{"line_number":5418,"context_line":"        service \u003d objects.Service.get_by_compute_host(context, host_name)"},{"line_number":5419,"context_line":"    except exception.HostMappingNotFound:"},{"line_number":5420,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_f46a83b0","line":5417,"range":{"start_line":5417,"start_character":8,"end_line":5417,"end_character":67},"updated":"2020-08-05 19:43:02.000000000","message":"Ditto.","commit_id":"0ad33543babc241f75ef1a75dcd0f3c79135e8be"}],"nova/context.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d1914346a062a4a9c2fe630eb44c7920d62bd220","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            raise exception.Forbidden()"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"def set_target_cell(context, cell_mapping):"},{"line_number":329,"context_line":"    \"\"\"Adds database connection information to the context"},{"line_number":330,"context_line":"    for communicating with the given target_cell."},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    This is used for permanently targeting a cell in a context."},{"line_number":333,"context_line":"    Use this when you want all subsequent code to target a cell."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    Passing None for cell_mapping will untarget the context."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    :param context: The RequestContext to add connection information"},{"line_number":338,"context_line":"    :param cell_mapping: An objects.CellMapping object or None"},{"line_number":339,"context_line":"    \"\"\""},{"line_number":340,"context_line":"    global CELL_CACHE"},{"line_number":341,"context_line":"    if cell_mapping is not None:"},{"line_number":342,"context_line":"        # avoid circular import"},{"line_number":343,"context_line":"        from nova.db import api as db"},{"line_number":344,"context_line":"        from nova import rpc"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # Synchronize access to the cache by multiple API workers."},{"line_number":347,"context_line":"        @utils.synchronized(cell_mapping.uuid)"},{"line_number":348,"context_line":"        def get_or_set_cached_cell_and_set_connections():"},{"line_number":349,"context_line":"            try:"},{"line_number":350,"context_line":"                cell_tuple \u003d CELL_CACHE[cell_mapping.uuid]"},{"line_number":351,"context_line":"            except KeyError:"},{"line_number":352,"context_line":"                db_connection_string \u003d cell_mapping.database_connection"},{"line_number":353,"context_line":"                context.db_connection \u003d db.create_context_manager("},{"line_number":354,"context_line":"                    db_connection_string)"},{"line_number":355,"context_line":"                if not cell_mapping.transport_url.startswith(\u0027none\u0027):"},{"line_number":356,"context_line":"                    context.mq_connection \u003d rpc.create_transport("},{"line_number":357,"context_line":"                        cell_mapping.transport_url)"},{"line_number":358,"context_line":"                context.cell_uuid \u003d cell_mapping.uuid"},{"line_number":359,"context_line":"                CELL_CACHE[cell_mapping.uuid] \u003d (context.db_connection,"},{"line_number":360,"context_line":"                                                 context.mq_connection)"},{"line_number":361,"context_line":"            else:"},{"line_number":362,"context_line":"                context.db_connection \u003d cell_tuple[0]"},{"line_number":363,"context_line":"                context.mq_connection \u003d cell_tuple[1]"},{"line_number":364,"context_line":"                context.cell_uuid \u003d cell_mapping.uuid"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        get_or_set_cached_cell_and_set_connections()"},{"line_number":367,"context_line":"    else:"},{"line_number":368,"context_line":"        context.db_connection \u003d None"},{"line_number":369,"context_line":"        context.mq_connection \u003d None"},{"line_number":370,"context_line":"        context.cell_uuid \u003d None"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"@contextmanager"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_14b3b74e","line":370,"range":{"start_line":328,"start_character":0,"end_line":370,"end_character":32},"updated":"2020-08-05 19:43:02.000000000","message":"^ Targets the provided context.","commit_id":"0ad33543babc241f75ef1a75dcd0f3c79135e8be"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d1914346a062a4a9c2fe630eb44c7920d62bd220","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        context.cell_uuid \u003d None"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"@contextmanager"},{"line_number":374,"context_line":"def target_cell(context, cell_mapping):"},{"line_number":375,"context_line":"    \"\"\"Yields a new context with connection information for a specific cell."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    This function yields a copy of the provided context, which is targeted to"},{"line_number":378,"context_line":"    the referenced cell for MQ and DB connections."},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    Passing None for cell_mapping will yield an untargetd copy of the context."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    :param context: The RequestContext to add connection information"},{"line_number":383,"context_line":"    :param cell_mapping: An objects.CellMapping object or None"},{"line_number":384,"context_line":"    \"\"\""},{"line_number":385,"context_line":"    # Create a sanitized copy of context by serializing and deserializing it"},{"line_number":386,"context_line":"    # (like we would do over RPC). This help ensure that we have a clean"},{"line_number":387,"context_line":"    # copy of the context with all the tracked attributes, but without any"},{"line_number":388,"context_line":"    # of the hidden/private things we cache on a context. We do this to avoid"},{"line_number":389,"context_line":"    # unintentional sharing of cached thread-local data across threads."},{"line_number":390,"context_line":"    # Specifically, this won\u0027t include any oslo_db-set transaction context, or"},{"line_number":391,"context_line":"    # any existing cell targeting."},{"line_number":392,"context_line":"    cctxt \u003d RequestContext.from_dict(context.to_dict())"},{"line_number":393,"context_line":"    set_target_cell(cctxt, cell_mapping)"},{"line_number":394,"context_line":"    yield cctxt"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"def scatter_gather_cells(context, cell_mappings, timeout, fn, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_7485d359","line":394,"range":{"start_line":373,"start_character":0,"end_line":394,"end_character":15},"updated":"2020-08-05 19:43:02.000000000","message":"Copies, targets and yields a new copy of context.","commit_id":"0ad33543babc241f75ef1a75dcd0f3c79135e8be"}],"nova/tests/fixtures.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4106467e060a39626d9eccce35df7542e6c84ed7","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        # Just do something simple and set/unset the cell_uuid on the context."},{"line_number":328,"context_line":"        if target_cell:"},{"line_number":329,"context_line":"            context.cell_uuid \u003d getattr(target_cell, \u0027uuid\u0027,"},{"line_number":330,"context_line":"                                        uuidsentinel.cell1)"},{"line_number":331,"context_line":"        else:"},{"line_number":332,"context_line":"            context.cell_uuid \u003d None"},{"line_number":333,"context_line":"        yield context"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_75ba9f6e","line":330,"range":{"start_line":330,"start_character":40,"end_line":330,"end_character":52},"updated":"2020-07-17 13:33:46.000000000","message":"not on you, but it\u0027d be nice if this was aliases as uuids like almost everywhere else","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"}],"nova/tests/functional/test_cross_cell_migrate.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4106467e060a39626d9eccce35df7542e6c84ed7","unresolved":false,"context_lines":[{"line_number":963,"context_line":"            server2[\u0027id\u0027], {\u0027migrate\u0027: {\u0027host\u0027: \u0027host2\u0027}})"},{"line_number":964,"context_line":"        self._wait_for_migration_status(server2, [\u0027error\u0027])"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    @mock.patch(\u0027nova.compute.api.API._get_source_compute_service\u0027)"},{"line_number":967,"context_line":"    @mock.patch(\u0027nova.servicegroup.api.API.service_is_up\u0027, return_value\u003dTrue)"},{"line_number":968,"context_line":"    def test_poll_unconfirmed_resizes_with_upcall(self, mock_service_up,"},{"line_number":969,"context_line":"        mock_get_compute_service):"},{"line_number":970,"context_line":"        \"\"\"Tests the _poll_unconfirmed_resizes periodic task with a cross-cell"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_55603b0e","line":967,"range":{"start_line":966,"start_character":0,"end_line":967,"end_character":77},"updated":"2020-07-17 13:33:46.000000000","message":"Do we want to assert that these are called? If not, perhaps use the \u0027new\u003dmock.Mock(...)\u0027 pattern","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4106467e060a39626d9eccce35df7542e6c84ed7","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"        test()"},{"line_number":1620,"context_line":""},{"line_number":1621,"context_line":"    @mock.patch(\u0027nova.compute.api.API._get_source_compute_service\u0027)"},{"line_number":1622,"context_line":"    @mock.patch(\u0027nova.servicegroup.api.API.service_is_up\u0027, return_value\u003dTrue)"},{"line_number":1623,"context_line":"    @mock.patch.object(objects.Migration, \u0027save\u0027)"},{"line_number":1624,"context_line":"    @mock.patch.object(objects.Migration, \u0027get_by_instance_and_status\u0027)"},{"line_number":1625,"context_line":"    @mock.patch.object(context.RequestContext, \u0027elevated\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_d573abe7","line":1622,"updated":"2020-07-17 13:33:46.000000000","message":"same comment around usage of \u0027new\u003dmock.Mock()\u0027","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a268e0053b3ff4d96d765386f1798379c8a8f20d","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"        test()"},{"line_number":1620,"context_line":""},{"line_number":1621,"context_line":"    @mock.patch(\u0027nova.compute.api.API._get_source_compute_service\u0027)"},{"line_number":1622,"context_line":"    @mock.patch(\u0027nova.servicegroup.api.API.service_is_up\u0027, return_value\u003dTrue)"},{"line_number":1623,"context_line":"    @mock.patch.object(objects.Migration, \u0027save\u0027)"},{"line_number":1624,"context_line":"    @mock.patch.object(objects.Migration, \u0027get_by_instance_and_status\u0027)"},{"line_number":1625,"context_line":"    @mock.patch.object(context.RequestContext, \u0027elevated\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_cc29419c","line":1622,"in_reply_to":"bf51134e_6ccab5a1","updated":"2020-07-21 10:28:20.000000000","message":"Actually we do, ignore this.","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"898b75b91458ab7cc2f2069f0e4b233f9592b437","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"        test()"},{"line_number":1620,"context_line":""},{"line_number":1621,"context_line":"    @mock.patch(\u0027nova.compute.api.API._get_source_compute_service\u0027)"},{"line_number":1622,"context_line":"    @mock.patch(\u0027nova.servicegroup.api.API.service_is_up\u0027, return_value\u003dTrue)"},{"line_number":1623,"context_line":"    @mock.patch.object(objects.Migration, \u0027save\u0027)"},{"line_number":1624,"context_line":"    @mock.patch.object(objects.Migration, \u0027get_by_instance_and_status\u0027)"},{"line_number":1625,"context_line":"    @mock.patch.object(context.RequestContext, \u0027elevated\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_6ccab5a1","line":1622,"in_reply_to":"bf51134e_d573abe7","updated":"2020-07-21 09:47:46.000000000","message":"We actually use these below but incorrectly, I\u0027ll tidy this up now.","commit_id":"fbea2b2dc627dbbf4ac5198ba2d44262cf6e7c5d"}]}
