diff --git a/jasset/asset_api.py b/jasset/asset_api.py index 3385fd4b8..7cc49fa66 100644 --- a/jasset/asset_api.py +++ b/jasset/asset_api.py @@ -311,6 +311,7 @@ def excel_to_db(excel_file): def get_ansible_asset_info(asset_ip, setup_info): + print setup_info, '***' disk_need = {} disk_all = setup_info.get("ansible_devices") if disk_all: @@ -332,7 +333,7 @@ def get_ansible_asset_info(asset_ip, setup_info): mac = setup_info.get("ansible_default_ipv4").get("macaddress") brand = setup_info.get("ansible_product_name") cpu_type = setup_info.get("ansible_processor")[1] - cpu_cores = setup_info.get("ansible_processor_count") + cpu_cores = setup_info.get("ansible_processor_vcpus") cpu = cpu_type + ' * ' + unicode(cpu_cores) memory = setup_info.get("ansible_memtotal_mb") try: diff --git a/jperm/ansible_api.py b/jperm/ansible_api.py index 0ceea61d5..a71d36a63 100644 --- a/jperm/ansible_api.py +++ b/jperm/ansible_api.py @@ -364,6 +364,16 @@ class MyTask(MyRunner): self.run("user", module_args, become=True) return self.results + def del_user_sudo(self, username): + """ + delete a role sudo item + :param username: + :return: + """ + module_args = "sed -i 's/^%s.*//' /etc/sudoers" % username + self.run("command", module_args, become=True) + return self.results + @staticmethod def gen_sudo_script(role_list, sudo_list): # receive role_list = [role1, role2] sudo_list = [sudo1, sudo2] diff --git a/jperm/views.py b/jperm/views.py index 0e45319f4..5e7707394 100644 --- a/jperm/views.py +++ b/jperm/views.py @@ -358,11 +358,13 @@ def perm_role_delete(request): recycle_resource = gen_resource(recycle_assets) task = MyTask(recycle_resource) try: - msg = task.del_user(get_object(PermRole, id=role_id).name) + msg_del_user = task.del_user(get_object(PermRole, id=role_id).name) + msg_del_sudo = task.del_user_sudo(get_object(PermRole, id=role_id).name) except Exception, e: logger.warning(u"Recycle Role failed: %s" % e) raise ServerError(u"回收已推送的系统用户失败: %s" % e) - logger.info(u"delete role %s - execute delete user: %s" % (role.name, msg)) + logger.info(u"delete role %s - execute delete user: %s" % (role.name, msg_del_user)) + logger.info(u"delete role %s - execute delete sudo: %s" % (role.name, msg_del_sudo)) # TODO: 判断返回结果,处理异常 # 删除存储的秘钥,以及目录 try: @@ -606,25 +608,28 @@ def perm_sudo_add(request): """ # 渲染数据 header_title, path1, path2 = "Sudo命令", "别名管理", "添加别名" + try: + if request.method == "POST": + # 获取参数: name, comment + name = request.POST.get("sudo_name").strip().upper() + comment = request.POST.get("sudo_comment").strip() + commands = request.POST.get("sudo_commands").strip() - if request.method == "POST": - # 获取参数: name, comment - name = request.POST.get("sudo_name").strip().upper() - comment = request.POST.get("sudo_comment").strip() - commands = request.POST.get("sudo_commands").strip() + if not name or not commands: + raise ServerError(u"sudo name 和 commands是必填项!") - pattern = re.compile(r'[\n,\r]') - commands = ', '.join(list_drop_str(pattern.split(commands), u'')) - logger.debug(u'添加sudo %s: %s' % (name, commands)) - - if get_object(PermSudo, name=name): - error = 'Sudo别名 %s已经存在' % name - else: - sudo = PermSudo(name=name.strip(), comment=comment, commands=commands) - sudo.save() - msg = u"添加Sudo命令别名: %s" % name - # 渲染数据 + pattern = re.compile(r'[\n,\r]') + commands = ', '.join(list_drop_str(pattern.split(commands), u'')) + logger.debug(u'添加sudo %s: %s' % (name, commands)) + if get_object(PermSudo, name=name): + error = 'Sudo别名 %s已经存在' % name + else: + sudo = PermSudo(name=name.strip(), comment=comment, commands=commands) + sudo.save() + msg = u"添加Sudo命令别名: %s" % name + except ServerError, e: + error = e return my_render('jperm/perm_sudo_add.html', locals(), request) @@ -641,22 +646,27 @@ def perm_sudo_edit(request): sudo_id = request.GET.get("id") sudo = PermSudo.objects.get(id=sudo_id) - if request.method == "POST": - name = request.POST.get("sudo_name").upper() - commands = request.POST.get("sudo_commands") - comment = request.POST.get("sudo_comment") + try: + if request.method == "POST": + name = request.POST.get("sudo_name").upper() + commands = request.POST.get("sudo_commands") + comment = request.POST.get("sudo_comment") - pattern = re.compile(r'[\n,\r]') - commands = ', '.join(list_drop_str(pattern.split(commands), u'')).strip() - logger.debug(u'添加sudo %s: %s' % (name, commands)) + if not name or not commands: + raise ServerError(u"sudo name 和 commands是必填项!") - sudo.name = name.strip() - sudo.commands = commands - sudo.comment = comment - sudo.save() + pattern = re.compile(r'[\n,\r]') + commands = ', '.join(list_drop_str(pattern.split(commands), u'')).strip() + logger.debug(u'添加sudo %s: %s' % (name, commands)) - msg = u"更新命令别名: %s" % name + sudo.name = name.strip() + sudo.commands = commands + sudo.comment = comment + sudo.save() + msg = u"更新命令别名: %s" % name + except ServerError, e: + error = e return my_render('jperm/perm_sudo_edit.html', locals(), request) diff --git a/templates/jperm/perm_sudo_edit.html b/templates/jperm/perm_sudo_edit.html index b90fb151d..248289a40 100644 --- a/templates/jperm/perm_sudo_edit.html +++ b/templates/jperm/perm_sudo_edit.html @@ -112,7 +112,28 @@ var config = { for (var selector in config) { $(selector).chosen(config[selector]); } +$('#sudoForm').validator({ + timely: 2, + theme: "yellow_right_effect", + rules: { + check_name: [/^\w{2,20}$/, '大写字母,2-20位'] + }, + fields: { + "sudo_name": { + rule: "required;check_name" + }, + "sudo_runas": { + rule: "required;check_name" + }, + "sudo_commands": { + rule: "required" + } + }, + valid: function(form) { + form.submit(); + } +});