def salt_key_manage(request, hostname=None): ''' 接受或拒绝salt主机,同时更新数据库 ''' if request.user.is_superuser: if request.method == 'GET': sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) hostname = request.GET.get('hostname') salthost = SaltHost.objects.get(hostname=hostname) action = '' if request.GET.has_key('add'): ret = sapi.accept_key(hostname) if ret: salthost.status = True salthost.save() action = u'添加主机' if request.GET.has_key('delete'): ret = sapi.delete_key(hostname) if ret: salthost.status = False salthost.save() action = u'删除主机' if request.GET.has_key('flush'): ret = sapi.salt_alive(hostname) try: alive = ret[hostname] alive = True except: alive = False salthost.alive = alive salthost.save() action = u'刷新主机' if action: Message.objects.create(type=u'部署管理', user=request.user, action=action, action_ip=UserIP(request), content=u'%s %s' % (action, salthost.hostname)) return redirect('key_list') else: raise Http404
def salt_key_import(request): ''' 导入salt主机 ''' if request.user.is_superuser: sapi = SaltAPI(url=settings.SALT_API['url'], username=settings.SALT_API['user'], password=settings.SALT_API['password']) minions, minions_pre = sapi.list_all_key() alive = False ret_alive = sapi.salt_alive('*') for node_name in minions: try: alive = ret_alive[node_name] alive = True except: alive = False try: SaltHost.objects.create(hostname=node_name, alive=alive, status=True) except: salthost = SaltHost.objects.get(hostname=node_name) now = datetime.datetime.now() alive_old = SaltHost.objects.get(hostname=node_name).alive if alive != alive_old: salthost.alive_time_last = now salthost.alive = alive salthost.alive_time_now = now salthost.save() for node_name in minions_pre: try: SaltHost.objects.get_or_create(hostname=node_name, alive=alive, status=False) except: print 'not create' return redirect('key_list') else: raise Http404