Commit 40d00f7c authored by 广宏伟's avatar 广宏伟

lost playboo_run

parent fe1f825f
...@@ -7,5 +7,7 @@ from jasset.models import Asset, AssetGroup ...@@ -7,5 +7,7 @@ from jasset.models import Asset, AssetGroup
class PermLog(models.Model): class PermLog(models.Model):
datetime = models.DateTimeField(auto_now_add=True) datetime = models.DateTimeField(auto_now_add=True)
result = models.CharField(max_length=1000, null=True, blank=True, default='') action = models.CharField(max_length=100, null=True, blank=True, default='')
is_finished = models.BooleanField(default=False) results = models.CharField(max_length=1000, null=True, blank=True, default='')
is_success = models.BooleanField(default=False)
is_finish = models.BooleanField(default=False)
...@@ -6,9 +6,10 @@ import uuid ...@@ -6,9 +6,10 @@ import uuid
import re import re
from ansible.playbook import PlayBook from ansible.playbook import PlayBook
from ansible import callbacks, utils from ansible import callbacks, utils
from jumpserver.tasks import playbook_run, add from jumpserver.tasks import playbook_run
from jumpserver.models import Setting from jumpserver.models import Setting
from jperm.models import PermLog
def get_object_list(model, id_list): def get_object_list(model, id_list):
...@@ -64,38 +65,21 @@ def perm_user_api(perm_info): ...@@ -64,38 +65,21 @@ def perm_user_api(perm_info):
'new': {'users': [], 'new': {'users': [],
'assets': []}} 'assets': []}}
""" """
log = PermLog(action=perm_info.get('action', ''))
try: try:
new_users = perm_info.get('new', {}).get('users', []) new_users = perm_info.get('new', {}).get('users', [])
new_assets = perm_info.get('new', {}).get('assets',[]) new_assets = perm_info.get('new', {}).get('assets', [])
del_users = perm_info.get('del', {}).get('users', []) del_users = perm_info.get('del', {}).get('users', [])
del_assets = perm_info.get('del', {}).get('assets', []) del_assets = perm_info.get('del', {}).get('assets', [])
print new_users, new_assets print new_users, new_assets
except IndexError: except IndexError:
raise ServerError("Error: function perm_user_api传入参数错误") raise ServerError("Error: function perm_user_api传入参数错误")
# 检查传入的是字符串还是对象
check_users = new_users + del_users
try: try:
if isinstance(check_users[0], str): new_ip = [asset.ip for asset in new_assets if isinstance(asset, Asset)]
var_type = 'str' del_ip = [asset.ip for asset in del_assets if isinstance(asset, Asset)]
else: new_username = [user.username for user in new_users if isinstance(user, User)]
var_type = 'obj' del_username = [user.username for user in del_users if isinstance(user, User)]
except IndexError:
raise ServerError("Error: function perm_user_api传入参数错误")
try:
if var_type == 'str':
new_ip = new_assets
del_ip = del_assets
new_username = new_users
del_username = del_users
else:
new_ip = [asset.ip for asset in new_assets if isinstance(asset, Asset)]
del_ip = [asset.ip for asset in del_assets if isinstance(asset, Asset)]
new_username = [user.username for user in new_users if isinstance(user, User)]
del_username = [user.username for user in del_users if isinstance(user, User)]
except IndexError: except IndexError:
raise ServerError("Error: function perm_user_api传入参数类型错误") raise ServerError("Error: function perm_user_api传入参数类型错误")
...@@ -114,11 +98,20 @@ def perm_user_api(perm_info): ...@@ -114,11 +98,20 @@ def perm_user_api(perm_info):
settings = get_object(Setting, name='default') settings = get_object(Setting, name='default')
results = playbook_run(inventory, playbook, settings) results = playbook_run(inventory, playbook, settings)
if not results.get('failed', 1) and not results.get('unreachable', ''):
is_success = True
else:
is_success = False
log.results = results
log.is_finish = True
log.is_success = is_success
log.save()
return results return results
def user_group_permed(user_group): def user_group_permed(user_group):
assets = user_group.asset_set.all() assets = user_group.asset.all()
asset_groups = user_group.asset_group.all() asset_groups = user_group.asset_group.all()
for asset_group in asset_groups: for asset_group in asset_groups:
...@@ -130,7 +123,7 @@ def user_group_permed(user_group): ...@@ -130,7 +123,7 @@ def user_group_permed(user_group):
def user_permed(user): def user_permed(user):
asset_groups = [] asset_groups = []
assets = [] assets = []
user_groups = user.user_group.all() user_groups = user.group.all()
asset_groups.extend(user.asset_group.all()) asset_groups.extend(user.asset_group.all())
assets.extend(user.asset.all()) assets.extend(user.asset.all())
...@@ -213,7 +206,7 @@ def _public_perm_api(info): ...@@ -213,7 +206,7 @@ def _public_perm_api(info):
new_assets.extend(user_group_permed(user_group).get('assets', [])) new_assets.extend(user_group_permed(user_group).get('assets', []))
perm_info = { perm_info = {
'new': {'users': [user], 'assets': new_assets} 'new': {'action': 'new user: ' + user.name, 'users': [user], 'assets': new_assets}
} }
elif info.get('type') == 'edit_user': elif info.get('type') == 'edit_user':
new_assets = [] new_assets = []
...@@ -229,6 +222,7 @@ def _public_perm_api(info): ...@@ -229,6 +222,7 @@ def _public_perm_api(info):
del_assets.extend((user_group_permed(user_group).get('assets', []))) del_assets.extend((user_group_permed(user_group).get('assets', [])))
perm_info = { perm_info = {
'action': 'edit user: ' + user.name,
'del': {'users': [user], 'assets': del_assets}, 'del': {'users': [user], 'assets': del_assets},
'new': {'users': [user], 'assets': new_assets} 'new': {'users': [user], 'assets': new_assets}
} }
...@@ -237,7 +231,7 @@ def _public_perm_api(info): ...@@ -237,7 +231,7 @@ def _public_perm_api(info):
user = info.get('user') user = info.get('user')
del_assets = user_permed(user).get('assets', []) del_assets = user_permed(user).get('assets', [])
perm_info = { perm_info = {
'del': {'users': [user], 'assets': del_assets}, 'action': 'del user: ' + user.name, 'del': {'users': [user], 'assets': del_assets},
} }
elif info.get('type') == 'edit_user_group': elif info.get('type') == 'edit_user_group':
...@@ -247,18 +241,32 @@ def _public_perm_api(info): ...@@ -247,18 +241,32 @@ def _public_perm_api(info):
assets = user_group_permed(user_group).get('assets', []) assets = user_group_permed(user_group).get('assets', [])
perm_info = { perm_info = {
'action': 'edit user group: ' + user_group.name,
'new': {'users': new_users, 'assets': assets}, 'new': {'users': new_users, 'assets': assets},
'del': {'users': del_users, 'assets': assets} 'del': {'users': del_users, 'assets': assets}
} }
elif info.get('type') == 'del_user_group': elif info.get('type') == 'del_user_group':
assets = [] user_group = info.get('group', [])
user_groups = info.get('group', []) del_users = user_group.user_set.all()
del_users = [user_group.user_set.all() for user_group in user_groups] assets = user_group_permed(user_group).get('assets', [])
for user_group in user_groups:
assets.extend(user_group_permed(user_group).get('assets', [])) perm_info = {
'action': "del user group: " + user_group.name, 'del': {'users': del_users, 'assets': assets}
}
else:
return
try:
results = perm_user_api(perm_info) # 通过API授权或回收
except ServerError, e:
return e
else:
return results
perm_info = {}
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment