You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jumpserver/apps/ops/utils.py

60 lines
1.7 KiB

# ~*~ 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:
Dev (#2838) * Dev ansible windows 2 (#2783) * [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] 更新翻译信息 * [Bugfix] 修复windows推送系统用户小bug (#2794) * [Update] 邮件设置添加配置项:发送账号 (#2796) * [Bugfix] 和资产相关的Serializer添加protocols字段; (#2800) * [Bugfix] 和资产相关的Serializer添加protocols字段; * [Bugfix] RemoteApp Form 修改过滤RDP协议资产 * [Bugfix] 修改小问题 * [Update] 用户授权相关API,如果需要切换到root org (#2803) * [Update] 用户授权相关API,如果需要切换到root org * [Update] 优化小问题 * [Update] 增加审计员权限控制 (#2792) * [Update] 审计员 * [Update] 增加审计员的权限控制 * [Update] 增加审计员Api全校的控制 * [Update] 优化auditor的api权限控制 * [Update] 优化审计员权限控制 * [Update]优化管理员权限的View * [Update] 优化超级管理权限的View * [Update] 添加审计员切换组织查询会话管理数据 * [Update] 前端禁用审计员在线会话终断按钮 * [Update]优化细节问题 * [Update] Auth Info (#2806) * [Update] 修改支持auth info导出 * [Update] 统一认证查看 * [Update] 修改auth book manager * [Update] 修改auth info * [Update] 完成修改auth info * [Update] 优化api * [Update] 修改assets 的related * [Update] serializer mixin继承 (#2810) * [Update] serializer mixin继承 * [Update] 修改system user更新serialzier * [Update] 修改success message * [Update] 添加一键禁用LDAP认证脚本 (#2813) * [Update] 修改资产创建格式 * [Update] 兼容之前的protocols格式 * [Update] Merge master_bugfix to dev_bugfix (#2817) * [Update] 邮件设置添加配置项:发送账号 (#2795) * [Bugfix] 修复普通用户被授权的RemoteApp列表加载为空的bug * [Bugfix] 修复普通用户加载被授权的RemoteApp为空的bug * [Update] 修改邮件测试的接受者为发送者 * [Update] 修改小问题 * [Update] 修改资产授权序列类返回资产protocols的协议格式/, 同时添加protocol和port字段 * [Update] 修改文案 (#2823) * [Update] 修改文案 * [Update] 修改文案2 * [Bugfix] 修复资产没有管理用户时获取connectivity字段失败的bug * [Update] 优化测试可连接性时结果获取 (#2825) * [Update] 修改资产使用patch方法更新时页面不提示messages信息 * [Update] 添加迁移文件,修改设置资产可连接性时管理用户为None的bug * [Update] 修改org.middleware自动切换组织的bug (#2829) * [Update] 修改org.middleware自动切换组织的bug * [Update] 将切换组织逻辑移动到PermsUtil中 * [Update] 修改首页组织名称显示来源
6 years ago
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