Beispiel #1
0
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
Beispiel #2
0
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