[Fixture] 添加runner run record

This commit is contained in:
ibuler
2017-03-14 00:58:25 +08:00
parent a822f667af
commit 915873135e
28 changed files with 444 additions and 1969 deletions

View File

@@ -1,6 +1,7 @@
# coding: utf-8
from __future__ import absolute_import, unicode_literals
import json
import time
@@ -33,13 +34,50 @@ def asset_test_ping_check(assets):
return result['contacted'].keys(), result['dark'].keys()
@shared_task(bind=True)
def run_AdHoc(self, task_tuple, assets,
task_name='Ansible AdHoc runner', pattern='all', record=True):
runner = AdHocRunner(assets)
if record:
from .models import TaskRecord
if not TaskRecord.objects.filter(uuid=self.request.id):
record = TaskRecord(uuid=self.request.id,
name=task_name,
assets=','.join(asset['hostname'] for asset in assets),
module_args=task_tuple,
pattern=pattern)
record.save()
else:
record = TaskRecord.objects.get(uuid=self.request.id)
record.date_start = timezone.now()
ts_start = time.time()
logger.warn('Start runner {}'.format(task_name))
result = runner.run(task_tuple, pattern=pattern, task_name=task_name)
timedelta = round(time.time() - ts_start, 2)
summary = runner.clean_result()
if record:
record.date_finished = timezone.now()
record.is_finished = True
record.result = json.dumps(result)
record.summary = json.dumps(summary)
record.timedelta = timedelta
if len(summary['failed']) == 0:
record.is_success = True
else:
record.is_success = False
record.save()
return summary
@shared_task(bind=True)
def push_users(self, assets, users):
"""
user: {
username: xxx,
shell: /bin/bash,
password: 'staf',
name: 'web',
username: 'web',
shell: '/bin/bash',
password: '123123123',
public_key: 'string',
sudo: '/bin/whoami,/sbin/ifconfig'
}
@@ -49,8 +87,8 @@ def push_users(self, assets, users):
if isinstance(assets, dict):
assets = [assets]
task_tuple = []
for user in users:
logger.debug('Push user: {}'.format(user))
# 添加用户, 设置公钥, 设置sudo
task_tuple.extend([
('user', 'name={} shell={} state=present password={}'.format(
@@ -65,16 +103,19 @@ def push_users(self, assets, users):
user['username'], user.get('sudo', '/bin/whoami')
))
])
record = TaskRecord(name='Push user',
task_name = 'Push user {}'.format(','.join([user['name'] for user in users]))
record = TaskRecord(name=task_name,
uuid=self.request.id,
date_start=timezone.now(),
assets=','.join(asset['hostname'] for asset in assets))
record.save()
logger.info('Runner start {0}'.format(timezone.now()))
logger.info('Runner {0} start {1}'.format(task_name, timezone.now()))
hoc = AdHocRunner(assets)
ts_start = time.time()
_ = hoc.run(task_tuple)
logger.info('Runner complete {0}'.format(timezone.now()))
logger.info('Runner {0} complete {1}'.format(task_name, timezone.now()))
result_clean = hoc.clean_result()
record.time = int(time.time() - ts_start)
record.date_finished = timezone.now()
record.is_finished = True
@@ -82,6 +123,6 @@ def push_users(self, assets, users):
record.is_success = True
else:
record.is_success = False
record.result = result_clean
record.result = json.dumps(result_clean)
record.save()
return result_clean