Пример #1
0
    def fetch_assets(cls, request):
        response = BaseResponse()
        try:
            if request.GET.get('add', None):
                response.data = IdcForm().as_table()
                return response
            ret = {}
            conditions = cls.idc_condition(request)
            idc_count = IDC.objects.filter(conditions).count()
            page_info = PageInfo(request.GET.get('pager', None), idc_count)
            idc_list = IDC.objects.filter(conditions).values(
                *cls.idc_values())[page_info.start:page_info.end]

            ret['table_config'] = cls.table_config()
            ret['condition_config'] = cls.condition_config()

            ret['data_list'] = list(idc_list)

            ret['page_info'] = {
                "page_str": page_info.pager(),
                "page_start": page_info.start,
            }

            ret['global_dict'] = {
                'idc_list': cls.idc_list(),
            }
            response.data = ret
            response.message = '获取成功'
        except Exception as e:
            response.status = False
            response.message = str(e)

        return response
Пример #2
0
 def put_assets(cls, request):
     response = BaseResponse()
     try:
         response.error = []
         put_dict = QueryDict(request.body, encoding='utf-8')
         update_list = json.loads(put_dict.get('update_list'))
         error_count = 0
         for row_dict in update_list:
             nid = row_dict.pop('nid')
             num = row_dict.pop('num')
             try:
                 IDC.objects.filter(id=nid).update(**row_dict)
             except Exception as e:
                 response.error.append({'num': num, 'message': str(e)})
                 response.status = False
                 error_count += 1
         if error_count:
             response.message = '共%s条,失败%s条' % (
                 len(update_list),
                 error_count,
             )
         else:
             response.message = '更新成功'
     except Exception as e:
         response.status = False
         response.message = str(e)
     return response
Пример #3
0
 def delete_assets(cls, request):
     response = BaseResponse()
     try:
         delete_dict = QueryDict(request.body, encoding='utf-8')
         id_list = delete_dict.getlist('id_list')
         IDC.objects.filter(id__in=id_list).delete()
         response.message = '删除成功'
     except Exception as e:
         response.status = False
         response.message = str(e)
     return response
Пример #4
0
def get_untreated_servers():
    response = BaseResponse()
    try:
        current_date = datetime.date.today()

        condition = Q()

        # 今日未采集的资产
        con_date = Q()
        con_date.connector = 'OR'
        con_date.children.append(("asset__latest_date__lt", current_date))
        con_date.children.append(("asset__latest_date", None))

        # 在线状态的服务器
        con_status = Q()
        con_status.children.append(('asset__device_status_id', '2'))

        condition.add(con_date, 'AND')
        condition.add(con_status, 'AND')

        result = models.Server.objects.filter(condition).values('hostname')
        response.data = list(result)
        response.status = True
    except Exception as e:
        response.message = str(e)
        models.ErrorLog.objects.create(asset_obj=None, title='get_untreated_servers', content=traceback.format_exc())
    return response
Пример #5
0
    def chart():
        response = BaseResponse()
        try:
            sql = """
                SELECT
                    id,
                    name,
                    (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=1) as server_count,
                    (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=2) as switch_count,
                    (select count(id) from asset as A where B.id=A.business_unit_id and A.device_type_id=3) as firewall_count
                from businessunit as B"""
            result = BusinessUnit.objects.raw(sql)
            ret = {
                'categories': [],
                'series': [{
                    "name": '服务器',
                    "data": []
                }, {
                    "name": '交换机',
                    "data": []
                }, {
                    "name": '防火墙',
                    "data": []
                }]
            }
            for row in result:
                ret['categories'].append(row.name)
                ret['series'][0]['data'].append(row.server_count)
                ret['series'][1]['data'].append(row.switch_count)
                ret['series'][2]['data'].append(row.firewall_count)
            response.data = ret
        except Exception as e:
            response.status = False
            response.message = str(e)

        return response
Пример #6
0
    def chart(last_id):

        response = BaseResponse()
        try:
            import time
            import random

            last_id = int(last_id)
            if last_id == 0:
                end = 100
            else:
                end = random.randint(1, 10)
            ret = []
            for i in range(0, end):
                temp = {'x': time.time() * 1000, 'y': random.randint(1, 1000)}
                ret.append(temp)
            last_id += 10
            response.data = ret
            response.last_id = last_id
        except Exception as e:
            response.status = False
            response.message = str(e)

        return response