/usr/lib/python2.6/site-packages/salt/runners/jobs.py
jobs runner模块用于方便管理正在运行或者处于活动状态的job
返回所有正在运行的job的报告
def active(): ''' Return a report on all actively running jobs from a job id centric perspective CLI Example: .. code-block:: bash salt-run jobs.active ''' ret = {} client = salt.client.get_local_client(__opts__['conf_file']) active_ = client.cmd('*', 'saltutil.running', timeout=__opts__['timeout']) for minion, data in active_.items(): if not isinstance(data, list): continue for job in data: if not job['jid'] in ret: ret[job['jid']] = _format_job_instance(job) ret[job['jid']].update({'Running': [{minion: job.get('pid', None)}], 'Returned': []}) else: ret[job['jid']]['Running'].append({minion: job['pid']}) mminion = salt.minion.MasterMinion(__opts__) for jid in ret: returner = _get_returner((__opts__['ext_job_cache'], __opts__['master_job_cache'])) data = mminion.returners['{0}.get_jid'.format(returner)](jid) for minion in data: if minion not in ret[jid]['Returned']: ret[jid]['Returned'].append(minion) salt.output.display_output(ret, opts=__opts__) return ret
$ sudo salt-run jobs.active 20150529112431115487: ---------- Arguments: Function: state.highstate Returned: - jialebi-qa-server - jidong-fileserver - gintama-qa-server - localhost.localdomain Running: |_ ---------- jialebi-qa-server: 30690 |_ ---------- jidong-fileserver: 23521 |_ ---------- gintama-qa-server: 16806 |_ ---------- localhost.localdomain: 10146 Target: * Target-type: glob User: sudo_caribbean
返回之前一个job的输出
def lookup_jid(jid, ext_source=None, missing=False): ''' Return the printout from a previously executed job CLI Example: .. code-block:: bash salt-run jobs.lookup_jid 20130916125524463507 ''' ret = {} mminion = salt.minion.MasterMinion(__opts__) returner = _get_returner((__opts__['ext_job_cache'], ext_source, __opts__['master_job_cache'])) data = mminion.returners['{0}.get_jid'.format(returner)](jid) for minion in data: if u'return' in data[minion]: ret[minion] = data[minion].get(u'return') else: ret[minion] = data[minion].get('return') if 'out' in data[minion]: out = data[minion]['out'] if missing: ckminions = salt.utils.minions.CkMinions(__opts__) exp = ckminions.check_minions(data['tgt'], data['tgt_type']) for minion_id in exp: if minion_id not in data: ret[minion_id] = 'Minion did not return' salt.output.display_output(ret, opts=__opts__) return ret
$ sudo salt-run jobs.list_job 20150529112431115487 Arguments: Function: state.highstate Minions: - localhost.localdomain - jialebi-qa-server - jidong-fileserver - zg2-develp-server - gintama-qa-server Result: ---------- gintama-qa-server: ---------- out: highstate return: ---------- file_|-/etc/httpd/conf/httpd.conf_|-/etc/httpd/conf/httpd.conf_|-managed: ---------- __run_num__: 1 changes: ---------- comment: File /etc/httpd/conf/httpd.conf is in the correct state name: /etc/httpd/conf/httpd.conf result: True group_|-apache_|-apache_|-present: ---------- __run_num__: 2 changes: ---------- comment: No change name: apache result: True retcode: 2 pkg_|-apache_|-httpd_|-installed: ---------- __run_num__: 0 changes: ---------- comment: Package httpd is already installed name: httpd result: True pkg_|-mod_python_|-mod_python_|-installed: ---------- __run_num__: 4 changes: ---------- comment: Package mod_python is already installed name: mod_python result: True retcode: 2
列出所有可以检测到的jobs
def list_jobs(ext_source=None): ''' List all detectable jobs and associated functions CLI Example: .. code-block:: bash salt-run jobs.list_jobs ''' returner = _get_returner((__opts__['ext_job_cache'], ext_source, __opts__['master_job_cache'])) mminion = salt.minion.MasterMinion(__opts__) ret = mminion.returners['{0}.get_jids'.format(returner)]() salt.output.display_output(ret, opts=__opts__) return ret
$ sudo salt-run jobs.list_jobs 20150528154601461997: ---------- Arguments: Function: state.highstate StartTime: 2015, May 28 15:46:01.461997 Target: jialebi-qa-server Target-type: glob User: root 20150528154733362383: ---------- Arguments: Function: state.highstate StartTime: 2015, May 28 15:47:33.362383 Target: jialebi-qa-server Target-type: glob User: root
def print_job(jid, ext_source=None): ''' Print job available details, including return data. CLI Example: .. code-block:: bash salt-run jobs.print_job ''' ret = {} returner = _get_returner((__opts__['ext_job_cache'], ext_source, __opts__['master_job_cache'])) mminion = salt.minion.MasterMinion(__opts__) job = mminion.returners['{0}.get_load'.format(returner)](jid) ret[jid] = _format_jid_instance(jid, job) ret[jid]['Result'] = mminion.returners['{0}.get_jid'.format(returner)](jid) salt.output.display_output(ret, opts=__opts__) return ret
$ sudo salt-run jobs.print_job 20150529112431115487 20150529112431115487: ---------- Arguments: Function: state.highstate Minions: - localhost.localdomain - jialebi-qa-server - jidong-fileserver - zg2-develp-server - gintama-qa-server Result: ---------- gintama-qa-server: ---------- out: highstate return: ---------- file_|-/etc/httpd/conf/httpd.conf_|-/etc/httpd/conf/httpd.conf_|-managed: ---------- __run_num__: 1 changes: ---------- comment: File /etc/httpd/conf/httpd.conf is in the correct state name: /etc/httpd/conf/httpd.conf result: True group_|-apache_|-apache_|-present: ---------- __run_num__: 2 changes: ---------- comment: No change name: apache result: True retcode: 2 pkg_|-apache_|-httpd_|-installed: ---------- __run_num__: 0 changes: ---------- comment: Package httpd is already installed name: httpd result: True