docs: def add(name, **kwargs):
      '''
      Add a job to the schedule
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' schedule.add job1 function='test.ping' seconds=3600
          # If function have some arguments, use job_args
          salt '*' schedule.add job2 function='cmd.run' job_args="['date >> /tmp/date.log']" seconds=60
      '''
  
      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)
      if 'result' in _new and not _new['result']:
          return _new
  
      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:
              # Effectively a no-op, since we can't really return without an event system
              ret['comment'] = 'Event module not available. Schedule add failed.'
      return ret