service_engine_register.py 2.8 KB
# coding=utf-8
#author:        4N
#createtime:    2021/9/14
#email:         nheweijun@sina.com

from app.util.component.ApiTemplate import ApiTemplate
import requests
from app.modules.service.models import ServiceEngine,db,Service
import datetime
import uuid
import configure
class Api(ApiTemplate):
    api_name = "注册服务引擎"
    def process(self):
        res = {}
        try:
            url = self.para.get("url")
            name = self.para.get("name")

            if ServiceEngine.query.filter_by(url=url).one_or_none():
                raise Exception("引擎已注册!")

            response:requests.Response = requests.get(url,timeout=3)
            if response.status_code != 200:
                raise Exception("服务引擎连接失败!")

            this_time = datetime.datetime.now()
            engine_guid = uuid.uuid1().__str__()
            service_engine = ServiceEngine(guid=engine_guid,
                                           name=name if name else response.json().get("Name"),
                                           url=url,
                                           type=response.json().get("Type"),
                                           create_time=this_time
                                           )
            #注册地址匹配引擎服务
            if response.json().get("Type") == "AddServer":
                response: requests.Response = requests.get("{}/Info".format(url),timeout=3)
                add_name = response.json().get("name")
                service = Service(
                    guid=engine_guid,
                    name=add_name,
                    title=add_name,
                    state=1,
                    create_time=this_time,
                    update_time=this_time,
                    description="地址匹配",
                    node=1,
                    overview="{}/Thumbnail".format(url),
                    type="地址匹配",
                    url = url
                )
                db.session.add(service)

            db.session.add(service_engine)
            db.session.commit()
            res["result"] = True
        except Exception as e:
            raise Exception("引擎已注册!")
        return res


    api_doc = {
        "tags": ["引擎接口"],
        "parameters": [
            {"name": "url",
             "in": "formData",
             "type": "string",
             "description": "服务地址"},
            {"name": "name",
             "in": "formData",
             "type": "string",
             "description": "name"},
        ],
        "responses": {
            200: {
                "schema": {
                    "properties": {
                    }
                }
            }
        }
    }