示例#1
0
def signup():
    #1. 받은 데이터의 키가 모두 존재하나 검사한다.
    #2. 일단 받아온 그룹이 존재하나 확인한다.
    #3. 그룹이 존재하지 않는다면 그룹을 등록한다.
    #4. 해당 그룹 아래에 엘리먼트를 등록하면서 랜덤 md5 를 생성한다.
    #5. 해당 엘리먼트의 하위에 하드웨어들을 등록하면서 랜덤 SHA1 을 등록한다.
    #6. 해당 하드웨어의 장치에 따라서 얻어올 센서값은 정해져 있으므로
    #   해당 센서값들을 하드웨어 종류에 맟춰서 등록한다.
    #   하드디스크의 SMART 값은 통쨰로 저장하는게 옳다.
    results = {}
    #1. 받은 데이터의 키가 모두 존재하나 검사한다.
    data = json.loads(request.data)
    arguments = ["MachineName", "LocalIPAddress", "GlobalIPAddress", "GatewayIPAddress",
                 "GroupFingerprint", "HardwareList",
                 "CoreComponent_CPU", "CoreComponent_Mainboard", "CoreComponent_GPU"]
    data_keys = data.keys()
    for argument in arguments:
        if argument not in data_keys:
            raise abort(400)
    #2. 일단 받아온 그룹이 존재하나 확인한다.
    element_md5 = "%032x" % random.getrandbits(128)
    group = db.query(Groups).filter_by(identifier=data["GroupFingerprint"]).first()
    if not group:
        #3. 그룹이 존재하지 않는다면 그룹을 등록한다.
        #   그다음 엘리먼트를 추가한다.
        try:
            with db.begin_nested():
                g = Groups(identifier=data["GroupFingerprint"],
                           cpu=data["CoreComponent_CPU"],
                           mainboard=data["CoreComponent_Mainboard"],
                           gpu=data["CoreComponent_GPU"])
                db.add(g)
                db.flush()

                e = Elements(group_id=g.id, fingerprint=element_md5,
                             machine_name=data["MachineName"],
                             ip_address_local=data["LocalIPAddress"],
                             ip_address_global=data["GlobalIPAddress"],
                             ip_address_gateway=data["GatewayIPAddress"])
                db.add(e)

        except Exception, e:
            print str(e)
            raise abort(500)
示例#2
0
    #5. 해당 엘리먼트의 하위에 하드웨어들을 등록하면서 랜덤 SHA1 을 등록한다.
    hws = data["HardwareList"]
    hws_sha1_dict = {}
    for hw_name in hws.keys():
        rsha1 = hashlib.sha1(str(random.random())).hexdigest()
        if hws[hw_name] == "CPU":
            #CPU 부하
            #CPU 온도
            #CPU 전력사용량
            try:
                with db.begin_nested():
                    h = Hardwares(element_id=e.id, fingerprint=rsha1, \
                                  type=0, hardware_name=hw_name)
                    db.add(h)
                    db.flush()
                    hws_sha1_dict[hw_name] = rsha1
                    s1 = Sensors(hardware_id=h.id, type=0, \
                                 sensor_name="Core Load")
                    db.add(s1)
                    s2 = Sensors(hardware_id=h.id, type=1, \
                                 sensor_name="Core Temperature")
                    db.add(s2)
                    s3 = Sensors(hardware_id=h.id, type=2, \
                                 sensor_name="Core Power")
                    db.add(s3)
                    s4 = Sensors(hardware_id=h.id, type=4, \
                                 sensor_name="Core TempPerLoad")
                    db.add(s4)
                    s5 = Sensors(hardware_id=h.id, type=5, \
                                 sensor_name="Core PowerPerLoad")