def METHOD_NAME(cron, name, params):
    '''
    Schedule the job <name> to run periodically given the <cron> expression.
    Jobs args and kwargs are given as parameters without dashes.
    Ex:
        udata job schedule "* * 0 * *" my-job arg1 arg2 key1=value key2=value
    '''
    if name not in celery.tasks:
        exit_with_error('Job %s not found', name)
    args = [p for p in params if '=' not in p]
    kwargs = dict(p.split('=') for p in params if '=' in p)
    label = 'Job {0}'.format(job_label(name, args, kwargs))
    try:
        task = PeriodicTask.objects.get(task=name, args=args, kwargs=kwargs)
        task.modify(crontab=PeriodicTask.Crontab.parse(cron))
    except PeriodicTask.DoesNotExist:
        task = PeriodicTask.objects.create(
            task=name,
            name=label,
            description='Periodic {0} job'.format(name),
            enabled=True,
            args=args,
            kwargs=kwargs,
            crontab=PeriodicTask.Crontab.parse(cron),
        )
    msg = 'Scheduled {label} with the following crontab: {cron}'
    log.info(msg.format(label=label, cron=task.schedule_display))