def _run_job(job_execution_id):
    ctx = context.ctx()
    job_execution = conductor.job_execution_get(ctx, job_execution_id)
    cluster = conductor.cluster_get(ctx, job_execution.cluster_id)
    if cluster is None or cluster.status != c_u.CLUSTER_STATUS_ACTIVE:
        LOG.info(_LI("Can not run this job on a non-existant cluster or a"
                     " inactive cluster."))
        return

    eng = get_job_engine(cluster, job_execution)
    if eng is None:
        raise e.EDPError(_("Cluster does not support job type %s")
                         % _get_job_type(job_execution))
    job_execution = _update_job_execution_extra(cluster, job_execution)

    # Job id is a string
    # Status is a string
    # Extra is a dictionary to add to extra in the job_execution
    if job_execution.job_configs.job_execution_info.get('job_execution_type'
                                                        ) == 'scheduled':
        jid, status, extra = eng.run_scheduled_job(job_execution)
    else:
        jid, status, extra = eng.run_job(job_execution)

    # Set the job id and the start time
    # Optionally, update the status and the 'extra' field
    update_dict = {'engine_job_id': jid,
                   'start_time': datetime.datetime.now()}
    if status:
        update_dict['info'] = {'status': status}
    if extra:
        curr_extra = job_execution.extra.copy()
        if curr_extra in 'neutron':
            curr_extra['neutron'] = curr_extra['neutron'].copy()
        curr_extra.update(extra)
        update_dict['extra'] = curr_extra

    job_execution = conductor.job_execution_update(
        ctx, job_execution, update_dict)
dataset/ETHPy150Open openstack/sahara/sahara/service/edp/job_manager.py/_run_job/swapped operands of `in`