mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-05-10 00:57:15 +00:00
* [Update] 改密支持windows * [Update] 修改asset表结构 * [Feature] Windows支持批量改密、测试可连接性等功能 * [Update] 处理创建资产时labels的问题 * [Update] 优化测试管理系统、系统用户可连接性任务执行逻辑 * [Update] 优化ansible任务逻辑;添加自动推送rdp系统用户功能 * [Update] 添加翻译 * [Update] 优化ansible任务逻辑(测试系统用户可连接性, 通过协议过滤资产) * [Update] 更新翻译 * [Update] 更新翻译 * [Update] 推送windows系统用户,默认添加到Users、Remote Desktop Users组中 * [Update] 优化小细节 * [Update] 更新翻译,删除多余代码 * [Update] 更新翻译信息
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
# ~*~ coding: utf-8 ~*~
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from common.utils import get_logger, get_object_or_none
|
|
from orgs.utils import set_to_root_org
|
|
from .models import Task, AdHoc
|
|
|
|
logger = get_logger(__file__)
|
|
|
|
|
|
def get_task_by_id(task_id):
|
|
return get_object_or_none(Task, id=task_id)
|
|
|
|
|
|
def update_or_create_ansible_task(
|
|
task_name, hosts, tasks, created_by,
|
|
interval=None, crontab=None, is_periodic=False,
|
|
callback=None, pattern='all', options=None,
|
|
run_as_admin=False, run_as=None, become_info=None,
|
|
):
|
|
if not hosts or not tasks or not task_name:
|
|
return None, None
|
|
set_to_root_org()
|
|
defaults = {
|
|
'name': task_name,
|
|
'interval': interval,
|
|
'crontab': crontab,
|
|
'is_periodic': is_periodic,
|
|
'callback': callback,
|
|
'created_by': created_by,
|
|
}
|
|
|
|
created = False
|
|
task, ok = Task.objects.update_or_create(
|
|
defaults=defaults, name=task_name, created_by=created_by
|
|
)
|
|
adhoc = task.get_latest_adhoc()
|
|
new_adhoc = AdHoc(task=task, pattern=pattern,
|
|
run_as_admin=run_as_admin,
|
|
run_as=run_as)
|
|
new_adhoc.tasks = tasks
|
|
new_adhoc.options = options
|
|
new_adhoc.become = become_info
|
|
|
|
hosts_same = True
|
|
if adhoc:
|
|
old_hosts = set([str(asset.id) for asset in adhoc.hosts.all()])
|
|
new_hosts = set([str(asset.id) for asset in hosts])
|
|
hosts_same = old_hosts == new_hosts
|
|
|
|
if not adhoc or adhoc != new_adhoc or not hosts_same:
|
|
logger.debug(_("Update task content: {}").format(task_name))
|
|
new_adhoc.save()
|
|
new_adhoc.hosts.set(hosts)
|
|
task.latest_adhoc = new_adhoc
|
|
created = True
|
|
return task, created
|
|
|
|
|
|
|