コード例 #1
0
def add_app():

    user_id = get_login_user_id()

    title = request.forms.title
    description = request.forms.description
    min_number = request.forms.min_number
    max_number = request.forms.max_number
    memory = request.forms.memory
    env = request.forms.env
    app_host = request.forms.app_host
    app_port = request.forms.app_port
    code_address = request.forms.code_address

    if user_id == 0:
        return abort(403, '未登录!')

    env = get_image_name_from_env(env)
    if env is None:
        return abort(403, "env error!")

    dao_obj = AppModel(title=title,
                       description=description,
                       user_id=user_id,
                       memory=memory,
                       env=env,
                       code_address=code_address,
                       app_host=app_host,
                       app_port=app_port,
                       min_container_number=min_number,
                       max_container_number=max_number,
                       create_time=datetime.datetime.now())
    dao_obj.save()
    return redirect("/user")
コード例 #2
0
ファイル: user.py プロジェクト: richardy2012/app
def add_app():

    user_id = get_login_user_id()

    title = request.forms.title
    description = request.forms.description
    min_number = request.forms.min_number
    max_number = request.forms.max_number
    memory = request.forms.memory
    env = request.forms.env
    app_host = request.forms.app_host
    app_port = request.forms.app_port
    code_address = request.forms.code_address

    if user_id == 0:
        return abort(403, '未登录!')

    env = get_image_name_from_env(env)
    if env is None:
        return abort(403, "env error!")

    dao_obj = AppModel(title=title, description=description, user_id=user_id, memory=memory, env=env,
                       code_address=code_address, app_host=app_host, app_port=app_port, min_container_number=min_number,
                       max_container_number=max_number, create_time=datetime.datetime.now())
    dao_obj.save()
    return redirect("/user")
コード例 #3
0
def update_app():
    """
    更新应用信息
    :return:
    """

    user_id = get_login_user_id()

    id = request.forms.app_id
    title = request.forms.title
    description = request.forms.description
    min_number = request.forms.min_number
    max_number = request.forms.max_number
    memory = request.forms.memory

    if user_id == 0:
        return abort(403, '未登录!')

    dao = AppModel.update(title=title,
                          description=description,
                          min_container_number=min_number,
                          max_container_number=max_number,
                          memory=memory).where(AppModel.id == id,
                                               AppModel.user_id == user_id)
    dao.execute()

    return redirect("/user")
コード例 #4
0
def add_one_container(task):
    """
    添加一个容器
    :return: boolean, 容器信息
    """

    try:
        app_obj = AppModel.select().where(AppModel.id == task.app_id).get()
    except:
        return False, None

    api_url, api_host = get_a_api_url()
    if api_url is None:
        return False, {}

    d = api_url

    api_url += "build"
    data = {
        "code_address": urllib.request.quote(app_obj.code_address),
        "memory": app_obj.memory,
        "image_name": app_obj.env
    }
    r = request_api(api_url, data)

    if r.status_code != 200:
        return False, {}

    obj = json.loads(r.text)
    if obj['code'] != 0:
        return False, {}

    return True, {"r": obj, "host": api_host, "api_url": d}
コード例 #5
0
ファイル: task_execute.py プロジェクト: Chanran/app
def add_one_container(task):
    """
    添加一个容器
    :return: boolean, 容器信息
    """

    try:
        app_obj = AppModel.select().where(AppModel.id == task.app_id).get()
    except:
        return False, None

    api_url, api_host = get_a_api_url()
    if api_url is None:
        return False, {}

    d = api_url

    api_url += "build"
    data = {
        "code_address": urllib.request.quote(app_obj.code_address),
        "memory": app_obj.memory,
        "image_name": app_obj.env
    }
    r = request_api(api_url, data)

    if r.status_code != 200:
        return False, {}

    obj = json.loads(r.text)
    if obj['code'] != 0:
        return False, {}

    return True, {"r": obj, "host": api_host, "api_url": d}
コード例 #6
0
ファイル: container_monitor.py プロジェクト: Chanran/app
def init():
    """
    入口函数
    :return:
    """
    apps = AppModel.select()
    for app in apps:
        handle_app(app)
コード例 #7
0
ファイル: container_monitor.py プロジェクト: mumulizi/app
def init():
    """
    入口函数
    :return:
    """
    apps = AppModel.select()
    for app in apps:
        handle_app(app)
コード例 #8
0
def get_apps():
    """
    获取用户所有应用
    :return: dict
    """
    user_id = get_login_user_id()
    apps = AppModel.select().where(AppModel.user_id == user_id)
    data = map(AppModel.get_dict_from_model_obj, apps)
    return json.dumps(list(data))
コード例 #9
0
ファイル: user.py プロジェクト: richardy2012/app
def get_apps():
    """
    获取用户所有应用
    :return: dict
    """
    user_id = get_login_user_id()
    apps = AppModel.select().where(AppModel.user_id==user_id)
    data = map(AppModel.get_dict_from_model_obj, apps)
    return json.dumps(list(data))
コード例 #10
0
ファイル: user.py プロジェクト: richardy2012/app
def deployment_app():
    """
    重新部署应用
    :return:
    """

    user_id = get_login_user_id()
    app_id = request.forms.app_id
    # 防止越权操作
    AppModel.select().where(AppModel.user_id == user_id).get()

    if TaskQueueModel.select().where(TaskQueueModel.app_id == app_id, TaskQueueModel.command_code == 3).count():
        return {"code": -1}

    obj = TaskQueueModel(app_id=app_id, user_id=user_id, command_code=3, command_content='{}', create_time=datetime.datetime.now())
    obj.save()

    return {"code": 0}
コード例 #11
0
ファイル: user.py プロジェクト: richardy2012/app
def delete_app(app_id):
    """
    删除应用
    :param app_id 应用id
    :return:
    """
    user_id = get_login_user_id()
    dao = AppModel.delete().where(AppModel.user_id == user_id, AppModel.id == app_id)
    dao.execute()

    return redirect("/user")
コード例 #12
0
def delete_app(app_id):
    """
    删除应用
    :param app_id 应用id
    :return:
    """
    user_id = get_login_user_id()
    dao = AppModel.delete().where(AppModel.user_id == user_id,
                                  AppModel.id == app_id)
    dao.execute()

    return redirect("/user")
コード例 #13
0
def deployment_app():
    """
    重新部署应用
    :return:
    """

    user_id = get_login_user_id()
    app_id = request.forms.app_id
    # 防止越权操作
    AppModel.select().where(AppModel.user_id == user_id).get()

    if TaskQueueModel.select().where(TaskQueueModel.app_id == app_id,
                                     TaskQueueModel.command_code == 3).count():
        return {"code": -1}

    obj = TaskQueueModel(app_id=app_id,
                         user_id=user_id,
                         command_code=3,
                         command_content='{}',
                         create_time=datetime.datetime.now())
    obj.save()

    return {"code": 0}
コード例 #14
0
def build_nginx_config(app_id):
    """
    生成应用nginx配置文件
    :param app_id:
    :return:
    """
    nginx_str = """

    upstream site%d {
        %s
    }

    server{
        listen %s:%d;
        index index.html index.htm;
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://site%d;
        }
    }
    """

    try:
        app = AppModel.select().where(AppModel.id == app_id).get()
    except:
        return False

    app_lists = ""
    containers = AppContainModel.select().where(
        AppContainModel.app_id == app_id)
    for obj in containers:
        app_lists = app_lists + ("server %s:%d;\n" % (obj.host, obj.port))

    config_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    config_path = config_path + "/data/nginx_config/" + str(app_id) + ".conf"
    if os.path.exists(config_path):
        os.remove(config_path)

    if app_lists == "":
        return False

    config_str = nginx_str % (app_id, app_lists, app.app_host, app.app_port,
                              app_id)
    fp = open(config_path, "w")
    fp.write(config_str)
    fp.close()

    subprocess.getstatusoutput("nginx -s reload")
コード例 #15
0
ファイル: task_execute.py プロジェクト: Chanran/app
def build_nginx_config(app_id):
    """
    生成应用nginx配置文件
    :param app_id:
    :return:
    """
    nginx_str = """

    upstream site%d {
        %s
    }

    server{
        listen %s:%d;
        index index.html index.htm;
        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_pass http://site%d;
        }
    }
    """

    try:
        app = AppModel.select().where(AppModel.id == app_id).get()
    except:
        return False

    app_lists = ""
    containers = AppContainModel.select().where(AppContainModel.app_id == app_id)
    for obj in containers:
        app_lists = app_lists + ("server %s:%d;\n" % (obj.host, obj.port))

    config_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    config_path = config_path + "/data/nginx_config/" + str(app_id) + ".conf"
    if os.path.exists(config_path):
        os.remove(config_path)

    if app_lists == "":
        return False

    config_str = nginx_str % (app_id, app_lists, app.app_host, app.app_port, app_id)
    fp = open(config_path, "w")
    fp.write(config_str)
    fp.close()

    subprocess.getstatusoutput("nginx -s reload")
コード例 #16
0
ファイル: user.py プロジェクト: richardy2012/app
def update_app():
    """
    更新应用信息
    :return:
    """

    user_id = get_login_user_id()

    id = request.forms.app_id
    title = request.forms.title
    description = request.forms.description
    min_number = request.forms.min_number
    max_number = request.forms.max_number
    memory = request.forms.memory

    if user_id == 0:
        return abort(403, '未登录!')

    dao = AppModel.update(title=title, description=description, min_container_number=min_number,
                          max_container_number=max_number, memory=memory).where(AppModel.id == id,
                                                                                AppModel.user_id == user_id)
    dao.execute()

    return redirect("/user")
コード例 #17
0
ファイル: Hitagi.py プロジェクト: ongbe/hitagi-reader
 def __init__(self):
     super(Hitagi, self).__init__()
     self.model = AppModel()
     self.main_controller = MainController(self.model)
     self.main_view = MainView(self.model, self.main_controller)
     self.main_view.show()