Exemplo n.º 1
0
def post_request_ext1(request):
    form, error = JsonParser(
        Argument('id', type=int, required=False),
        Argument('deploy_id', type=int, help='参数错误'),
        Argument('name', help='请输入申请标题'),
        Argument('extra', type=list, help='请选择发布版本'),
        Argument('host_ids',
                 type=list,
                 filter=lambda x: len(x),
                 help='请选择要部署的主机'),
        Argument('type', default='1'),
        Argument('plan', required=False),
        Argument('desc', required=False),
    ).parse(request.body)
    if error is None:
        deploy = Deploy.objects.get(pk=form.deploy_id)
        form.spug_version = Repository.make_spug_version(deploy.id)
        if form.extra[0] == 'tag':
            if not form.extra[1]:
                return json_response(error='请选择要发布的版本')
            form.version = form.extra[1]
        elif form.extra[0] == 'branch':
            if not form.extra[2]:
                return json_response(error='请选择要发布的分支及Commit ID')
            form.version = f'{form.extra[1]}#{form.extra[2][:6]}'
        elif form.extra[0] == 'repository':
            if not form.extra[1]:
                return json_response(error='请选择要发布的版本')
            repository = Repository.objects.get(pk=form.extra[1])
            form.repository_id = repository.id
            form.version = repository.version
            form.spug_version = repository.spug_version
            form.extra = ['repository'] + json.loads(repository.extra)
        else:
            return json_response(error='参数错误')

        form.extra = json.dumps(form.extra)
        form.status = '0' if deploy.is_audit else '1'
        form.host_ids = json.dumps(sorted(form.host_ids))
        if form.id:
            req = DeployRequest.objects.get(pk=form.id)
            is_required_notify = deploy.is_audit and req.status == '-1'
            DeployRequest.objects.filter(pk=form.id).update(
                created_by=request.user, reason=None, **form)
        else:
            req = DeployRequest.objects.create(created_by=request.user, **form)
            is_required_notify = deploy.is_audit
        if is_required_notify:
            Thread(target=Helper.send_deploy_notify,
                   args=(req, 'approve_req')).start()
    return json_response(error=error)
Exemplo n.º 2
0
def post_request_ext2(request):
    form, error = JsonParser(
        Argument('id', type=int, required=False),
        Argument('deploy_id', type=int, help='缺少必要参数'),
        Argument('name', help='请输申请标题'),
        Argument('host_ids',
                 type=list,
                 filter=lambda x: len(x),
                 help='请选择要部署的主机'),
        Argument('extra', type=dict, required=False),
        Argument('version', default=''),
        Argument('type', default='1'),
        Argument('plan', required=False),
        Argument('desc', required=False),
    ).parse(request.body)
    if error is None:
        deploy = Deploy.objects.filter(pk=form.deploy_id).first()
        if not deploy:
            return json_response(error='未找到该发布配置')
        extra = form.pop('extra')
        if DeployExtend2.objects.filter(
                deploy=deploy,
                host_actions__contains='"src_mode": "1"').exists():
            if not extra:
                return json_response(
                    error='该应用的发布配置中使用了数据传输动作且设置为发布时上传,请上传要传输的数据')
            form.spug_version = extra['path']
            form.extra = json.dumps(extra)
        else:
            form.spug_version = Repository.make_spug_version(deploy.id)
        form.name = form.name.replace("'", '')
        form.status = '0' if deploy.is_audit else '1'
        form.host_ids = json.dumps(form.host_ids)
        if form.id:
            req = DeployRequest.objects.get(pk=form.id)
            is_required_notify = deploy.is_audit and req.status == '-1'
            DeployRequest.objects.filter(pk=form.id).update(
                created_by=request.user, reason=None, **form)
        else:
            req = DeployRequest.objects.create(created_by=request.user, **form)
            is_required_notify = deploy.is_audit
        if is_required_notify:
            Thread(target=Helper.send_deploy_notify,
                   args=(req, 'approve_req')).start()
    return json_response(error=error)
Exemplo n.º 3
0
 def post(self, request):
     form, error = JsonParser(
         Argument('deploy_id', type=int, help='参数错误'),
         Argument('version', help='请输入构建版本'),
         Argument('extra', type=list, help='参数错误'),
         Argument('remarks', required=False)
     ).parse(request.body)
     if error is None:
         deploy = Deploy.objects.filter(pk=form.deploy_id).first()
         if not deploy:
             return json_response(error='未找到指定发布配置')
         form.extra = json.dumps(form.extra)
         form.spug_version = Repository.make_spug_version(deploy.id)
         rep = Repository.objects.create(
             app_id=deploy.app_id,
             env_id=deploy.env_id,
             created_by=request.user,
             **form)
         Thread(target=dispatch, args=(rep,)).start()
         return json_response(rep.to_view())
     return json_response(error=error)