'Validate source object will satisfy the misplaced object queue entry
and move to destination.
:param q_policy_index: the policy_index for the source object
:param account: the account name of the misplaced object
:param container: the container name of the misplaced object
:param obj: the name of the misplaced object
:param q_ts: the timestamp of the misplaced object
:param path: the full path of the misplaced object for logging
:param container_policy_index: the policy_index of the destination
:param source_ts: the timestamp of the source object
:param source_obj_status: the HTTP status source object request
:param source_obj_info: the HTTP headers of the source object request
:param source_obj_iter: the body iter of the source object request'

def ensure_object_in_right_location(self, q_policy_index, account, container, obj, q_ts, path, container_policy_index, source_ts, source_obj_status, source_obj_info, source_obj_iter, **kwargs):

    if (((source_obj_status // 100) != 2) or (source_ts < q_ts)):
        if (q_ts < (time.time() - self.reclaim_age)):
            self.stats_log('lost_source', '%r    (%s)    was    not    available    in    policy_index    %s    and    has    expired', path, q_ts.internal, q_policy_index, level=logging.CRITICAL)
            return True
        self.stats_log('unavailable_source', '%r    (%s)    in    policy_index    %s    responded    %s    (%s)', path, q_ts.internal, q_policy_index, source_obj_status, source_ts.internal, level=logging.WARNING)
        return False
    ts = max(Timestamp(source_ts), q_ts)
    put_timestamp = slightly_later_timestamp(ts, offset=2)
    self.stats_log('copy_attempt', '%r    (%f)    in    policy_index    %s    will    be    moved    to    policy_index    %s    (%s)', path, source_ts, q_policy_index, container_policy_index, put_timestamp)
    headers = source_obj_info.copy()
    headers['X-Backend-Storage-Policy-Index'] = container_policy_index
    headers['X-Timestamp'] = put_timestamp
    try:
        self.swift.upload_object(FileLikeIter(source_obj_iter), account, container, obj, headers=headers)
    except UnexpectedResponse as err:
        self.stats_log('copy_failed', 'upload    %r    (%f)    from    policy_index    %s    to    policy_index    %s    returned    %s', path, source_ts, q_policy_index, container_policy_index, err, level=logging.WARNING)
        return False
    except:
        self.stats_log('unhandled_error', 'unable    to    upload    %r    (%f)    from    policy_index    %s    to    policy_index    %s    ', path, source_ts, q_policy_index, container_policy_index, level=logging.ERROR, exc_info=True)
        return False
    self.stats_log('copy_success', '%r    (%f)    moved    from    policy_index    %s    to    policy_index    %s    (%s)', path, source_ts, q_policy_index, container_policy_index, put_timestamp)
    return self.throw_tombstones(account, container, obj, q_ts, q_policy_index, path)
