コード例 #1
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def set_project_env():
    form = request.form
    project = form['project']
    env = form['env']
    content = {}

    p = Project.get_by_name(project)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    for line, i in enumerate(form['content'].split('\n')):
        if not i.strip():
            continue

        kv = i.split('=', 1)
        if len(kv) == 1:
            raise ValueError('invalid env item %s at line %d' % (i, line + 1))

        content[kv[0].strip()] = kv[1].strip()

    try:
        eru.set_app_env(project, env, **content)
    except Exception as e:
        print e.message
    log = OPLog.create(g.user.id, OPLOG_ACTION.set_project_env)
    log.data = content
    log.project_name = project
コード例 #2
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def deploy_container_api():
    form = request.form
    project = form['project']
    if project == APPNAME_ERU_LB:
        raise ValueError('Unable to deploy eru-lb, do it on load balance page')

    p = Project.get_by_name(project)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    version = form['version']

    eru.deploy_private(
        group_name=g.user.group,
        pod_name=form['pod'],
        app_name=project,
        ncore=form.get('ncore', type=float),
        ncontainer=form.get('ncontainer', type=int),
        version=version,
        entrypoint=form['entrypoint'],
        env=form['env'],
        network_ids=form.getlist('network'),
        host_name=form.get('host'),
        args=form['extendargs'].split(' '),
    )

    log = OPLog.create(g.user.id, OPLOG_ACTION.create_container)
    log.project_name = project
    log.image = '%s:%s' % (project, version)
コード例 #3
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def delete_project_env():
    name = request.form['project']
    p = Project.get_by_name(name)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    eru.delete_app_env(name, request.form['env'])
    return {'msg': 'ok'}
コード例 #4
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def build_image(name):
    project = Project.get_by_name(name)
    if not project:
        abort(404)

    revisions = _get_project_commits(project.git)
    pods = eru.list_group_pods(g.user.group)
    base_images = BaseImage.list_all()
    return render_template(
        '/deploy/projects/build_image.html', project=project,
        revisions=revisions, pods=pods, base_images=base_images)
コード例 #5
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def start_container():
    cid = request.form['id']
    name = eru.get_container(cid)['appname']

    p = Project.get_by_name(name)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    eru.start_container(cid)

    log = OPLog.create(g.user.id, OPLOG_ACTION.start_container)
    log.container_id = cid
コード例 #6
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def stop_container():
    cid = request.form['id']
    name = eru.get_container(cid)['appname']
    if name == APPNAME_ERU_LB:
        raise ValueError('Unable to stop eru-lb, do it on load balance page')

    p = Project.get_by_name(name)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    eru.stop_container(cid)
    log = OPLog.create(g.user.id, OPLOG_ACTION.stop_container)
    log.container_id = cid
コード例 #7
0
ファイル: settings.py プロジェクト: tonicbupt/ainur
def grant_project(uid):
    user = User.get_by_uid(uid)
    if not user:
        return {'reason': '用户不存在'}, 404

    name = request.form.get('project', '')
    p = Project.get_by_name(name)
    if not p:
        return {'reason': '项目不存在'}, 404

    user.grant_project(name)
    log = OPLog.create(g.user.id, OPLOG_ACTION.grant_project)
    log.project_name = name
    log.acceptor = user.uid
コード例 #8
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def api_build_image():
    name = request.form['project']
    app = eru.get_app(name)

    p = Project.get_by_name(name)
    if not p.is_accessible(g.user):
        return {'reason': '你没有操作这个项目的权限'}, 403

    revision = request.form['revision']
    _register_app(app['git'], revision)
    _get_project(app['git'])

    pod = request.form['pod']
    image = 'docker-registry.intra.hunantv.com/nbeimage/%s' % request.form['image']
    eru.build_image(g.user.group, pod, app['name'], image, revision)

    log = OPLog.create(g.user.id, OPLOG_ACTION.build_image)
    log.project_name = name
    log.image = '%s:%s' % (name, revision)
コード例 #9
0
ファイル: deploy.py プロジェクト: tonicbupt/ainur
def detail(name):
    project = Project.get_by_name(name)
    if not project:
        abort(404)
    return render_template('/deploy/projects/detail.html', project=project)