def saltkey_list(): salt_list = SaltKeyList.objects.values_list('minion_id', 'certification_status') minion_list = [] with requests.Session() as s: saltapi = SaltAPI(session=s) response_data = saltapi.saltkey_listall_api() if not response_data['status']: logger.error('saltkey_list调用api失败,请检查api接口状态') return False try: data_source = response_data['results']['return'][0]['data']['return'] minions_pre = data_source['minions_pre'] minions_denied = data_source['minions_denied'] minions = data_source['minions'] minions_rejected = data_source['minions_rejected'] if minions_pre: for i in minions_pre: minion_list.append((i, 'unaccepted')) updated_values = {'minion_id': i, 'certification_status': 'unaccepted', 'update_time': datetime.datetime.now()} SaltKeyList.objects.update_or_create(minion_id=i, certification_status='unaccepted', defaults=updated_values) if minions_denied: for i in minions_denied: minion_list.append((i, 'denied')) updated_values = {'minion_id': i, 'certification_status': 'denied', 'update_time': datetime.datetime.now()} SaltKeyList.objects.update_or_create(minion_id=i, certification_status='denied', defaults=updated_values) if minions: for i in minions: minion_list.append((i, 'accepted')) updated_values = {'minion_id': i, 'certification_status': 'accepted', 'update_time': datetime.datetime.now()} SaltKeyList.objects.update_or_create(minion_id=i, certification_status='accepted', defaults=updated_values) if minions_rejected: for i in minions_rejected: minion_list.append((i, 'rejected')) updated_values = {'minion_id': i, 'certification_status': 'rejected', 'update_time': datetime.datetime.now()} SaltKeyList.objects.update_or_create(minion_id=i, certification_status='rejected', defaults=updated_values) # 删除原表中不在本次查询结果里的记录,因为如果你删除了一个minion那么查询结果就没有这个minion了所以要从表中删除 for i in salt_list: if i not in minion_list: SaltKeyList.objects.filter(minion_id=i[0], certification_status=i[1]).delete() return True except Exception as e: logger.error('saltkey_list在执行数据库操作时候出错了:' + str(e)) return False
def saltkey_list(): print('开始更新SaltKeyList表' + time.strftime('%Y年%m月%d日 %X')) salt_list = SaltKeyList.objects.values_list('minion_id', 'certification_status') minion_list = [] with requests.Session() as s: saltapi = SaltAPI(session=s) if saltapi.get_token() is False: logger.error('saltkey_list定时操作获取SaltAPI调用get_token请求出错') print('saltkey_list定时操作获取SaltAPI调用get_token请求出错') return False else: response_data = saltapi.saltkey_listall_api() try: data_source = response_data['return'][0]['data']['return'] minions_pre = data_source['minions_pre'] minions_denied = data_source['minions_denied'] minions = data_source['minions'] minions_rejected = data_source['minions_rejected'] if minions_pre: for i in minions_pre: minion_list.append((i, 'unaccepted')) updated_values = { 'minion_id': i, 'certification_status': 'unaccepted', 'update_time': time.strftime('%Y年%m月%d日 %X') } SaltKeyList.objects.update_or_create( minion_id=i, certification_status='unaccepted', defaults=updated_values) if minions_denied: for i in minions_denied: minion_list.append((i, 'denied')) updated_values = { 'minion_id': i, 'certification_status': 'denied', 'update_time': time.strftime('%Y年%m月%d日 %X') } SaltKeyList.objects.update_or_create( minion_id=i, certification_status='denied', defaults=updated_values) if minions: for i in minions: minion_list.append((i, 'accepted')) updated_values = { 'minion_id': i, 'certification_status': 'accepted', 'update_time': time.strftime('%Y年%m月%d日 %X') } SaltKeyList.objects.update_or_create( minion_id=i, certification_status='accepted', defaults=updated_values) if minions_rejected: for i in minions_rejected: minion_list.append((i, 'rejected')) updated_values = { 'minion_id': i, 'certification_status': 'rejected', 'update_time': time.strftime('%Y年%m月%d日 %X') } SaltKeyList.objects.update_or_create( minion_id=i, certification_status='rejected', defaults=updated_values) # 删除原表中不在本次查询结果里的记录,因为如果你删除了一个minion那么查询结果就没有这个minion了所以要从表中删除 for i in salt_list: if i not in minion_list: SaltKeyList.objects.filter( minion_id=i[0], certification_status=i[1]).delete() print('saltkey_list表更新完成' + time.strftime('%Y年%m月%d日 %X')) return True except Exception as e: logger.error('saltkey_list在执行数据库操作时候出错了:' + str(e)) print('saltkey_list表更新出错,请检查' + time.strftime('%Y年%m月%d日 %X'), e) return False