

def add(name, **kwargs):
    '\n    Add a job to the schedule\n\n    CLI Example:\n\n    .. code-block:: bash\n\n        salt \'*\' schedule.add job1 function=\'test.ping\' seconds=3600\n        # If function have some arguments, use job_args\n        salt \'*\' schedule.add job2 function=\'cmd.run\' job_args="[\'date >> /tmp/date.log\']" seconds=60\n    '
    ret = {
        'comment': 'Failed to add job {0} to schedule.'.format(name),
        'result': False,
    }
    if (name in list_(show_all=True, return_yaml=False)):
        ret['comment'] = 'Job {0} already exists in schedule.'.format(name)
        ret['result'] = False
        return ret
    if (not name):
        ret['comment'] = 'Job name is required.'
        ret['result'] = False
    time_conflict = False
    for item in ['seconds', 'minutes', 'hours', 'days']:
        if ((item in kwargs) and ('when' in kwargs)):
            time_conflict = True
        if ((item in kwargs) and ('cron' in kwargs)):
            time_conflict = True
    if time_conflict:
        ret['comment'] = 'Error: Unable to use "seconds", "minutes", "hours", or "days" with "when" or "cron" options.'
        return ret
    if (('when' in kwargs) and ('cron' in kwargs)):
        ret['comment'] = 'Unable to use "when" and "cron" options together.  Ignoring.'
        return ret
    persist = True
    if ('persist' in kwargs):
        persist = kwargs['persist']
    _new = build_schedule_item(name, **kwargs)
    schedule_data = {
        
    }
    schedule_data[name] = _new
    if (('test' in kwargs) and kwargs['test']):
        ret['comment'] = 'Job: {0} would be added to schedule.'.format(name)
        ret['result'] = True
    else:
        try:
            eventer = salt.utils.event.get_event('minion', opts=__opts__)
            res = __salt__['event.fire']({
                'name': name,
                'schedule': schedule_data,
                'func': 'add',
                'persist': persist,
            }, 'manage_schedule')
            if res:
                event_ret = eventer.get_event(tag='/salt/minion/minion_schedule_add_complete', wait=30)
                if (event_ret and event_ret['complete']):
                    schedule = event_ret['schedule']
                    if (name in schedule):
                        ret['result'] = True
                        ret['comment'] = 'Added job: {0} to schedule.'.format(name)
                        return ret
        except KeyError:
            ret['comment'] = 'Event module not available. Schedule add failed.'
    return ret

dataset/ETHPy150Open saltstack/salt/salt/modules/schedule.py add/original