django02_02 CMDB_api_untreated_server

基于上一篇环境,本篇详细叙述 中控机通过API获取主机列表的内容

  • 在API中定义获取主机列表的url

from web_api import views

urlpatterns = [
    url(r'untreated_server/', views.untreated_server),
]
  • 在views中创建响应的函数

views.py

import json
from django.shortcuts import HttpResponse
from web_api.bll import api_manager
# ##### 获取需要今日未采集数据的服务器 #####
def untreated_server(request):
    ret = {'status': 0, 'message': '', 'data': ''}
    try:
        result = api_manager.get_untreated_servers()
        if result.status:
            ret['data'] = result.data
            ret['status'] = 1
        else:
            raise Exception(result.message)
    except Exception, e:
        ret['message'] = str(e)
    return HttpResponse(json.dumps(ret))
  • 在views中调用web_api.bll中的api_manager.get_untreated_servers()函数进行具体的列表获取操作动作

from web_api.dal import asset as dal_asset
from web_api.dal import server as dal_server
from web_api.dal import nic as dal_nic
from web_api.dal import memory as dal_memory
from web_api.dal import disk as dal_disk
from web_api.dal import user_profile as dal_user_profile
from web_api.dal import handle_log as dal_handle_log

from backend.response.base_response import BaseResponse
from backend.commons import agorithm
from django.db.models import Q
import datetime


def get_untreated_servers():
    response = BaseResponse()#实例化BaseResponse类,此类接受数据及用户状态
    try:
        current_date = datetime.date.today()#获取当前日期
        values = ('server__hostname',)

        condition = Q()#生成condition对象

        con_date = Q()#实例化Q
        con_date.connector = 'OR'#连接Q
        con_date.children.append(("latest_date__lt", current_date))#更新时间
        con_date.children.append(("latest_date", None))

        con_status = Q()
        # 在线状态的服务器(1000:上架;1001:在线)
        con_status.children.append(('device_status__code', '1001'))

        condition.add(con_date, 'AND')#更新时间标记
        condition.add(con_status, 'AND')#更新状态

        result = dal_asset.get_q(condition, *values)#获取当前数据
        result = list(result)
        response.status = True#状态修改
        response.data = result
    except Exception, e:

        response.message = str(e)
    return response #讲所有数据返回
  • BaseResponse类的内容如下:

class BaseResponse(object):

    def __init__(self):
        self.status = False
        self.message = ''
        self.data = None

至此,API配置基本完成,中控机进行获取即可

你可能感兴趣的:(django,应用)