Esempio n. 1
0
def api_build(request, hash):
    project = models.Project.objects.get(idhash=hash)
    if project:
        if request.method == 'POST':
            if request.POST.get('payload'):
                r = json.loads(request.POST['payload'])
            else:
                r = json.loads(request.body)
            ref = r.get('ref', '')
            branch = ref.split('/',2)[-1]
            if branch != project.branch:
                return HttpResponse('{"result": "Request ignored"}',
                        content_type='application/json')

        current_builds = models.Build.objects.filter(project=project, state=0)
        if not current_builds:
            build = models.Build.objects.create(project=project, state=0)

            build.save()

            taskid = RhumbaClient().queue('sideloader', 'build', {
                'build_id': build.id
            })

            build.task_id = taskid
            build.save()

            return HttpResponse('{"result": "Building"}',
                    content_type='application/json')
        return HttpResponse('{"result": "Already building"}',
                content_type='application/json')

    return redirect('home')
Esempio n. 2
0
def workflow_schedule(request, flow, build):
    flow = models.ReleaseFlow.objects.get(id=flow)
    build = models.Build.objects.get(id=build)

    if request.method == "POST":
        form = forms.ReleasePushForm(request.POST)
        if form.is_valid():
            release = form.cleaned_data

            schedule = release['scheduled'] + timedelta(hours=int(release['tz']))

            RhumbaClient().queue('sideloader', 'doRelease', {
                'build_id': build.id, 
                'flow_id': flow.id,
                'schedule': schedule
            })

            return redirect('projects_view', id=flow.project.id)
    else:
        form = forms.ReleasePushForm()

    return render(request, 'flows/schedule.html', {
        'projects': getProjects(request),
        'project': flow.project,
        'form': form,
        'flow': flow,
        'build': build
    })
Esempio n. 3
0
def api_sign(request, hash):
    signoff = models.ReleaseSignoff.objects.get(idhash=hash)
    signoff.signed = True
    signoff.save()

    if signoff.release.waiting:
        if signoff.release.check_signoff():
            taskid = RhumbaClient().queue('sideloader', 'runrelease', {
                'release_id': signoff.release.id
            })
           
    return render(request, "sign.html", {
        'signoff': signoff
    })
Esempio n. 4
0
def workflow_push(request, flow, build):
    flow = models.ReleaseFlow.objects.get(id=flow)
    project = flow.project
    build = models.Build.objects.get(id=build)

    if (request.user.is_superuser) or (
        project in request.user.project_set.all()):
        
        RhumbaClient().queue('sideloader', 'release', {
            'build_id': build.id, 
            'flow_id': flow.id
        })

    return redirect('projects_view', id=project.id)
Esempio n. 5
0
def projects_build(request, id):
    project = models.Project.objects.get(id=id)
    if project and (request.user.is_superuser or (
        project in request.user.project_set.all())):
        current_builds = models.Build.objects.filter(project=project, state=0)
        if current_builds:
            return redirect('build_view', id=current_builds[0].id)
        else:
            build = models.Build.objects.create(project=project, state=0)

            build.save()

            taskid = RhumbaClient().queue('sideloader', 'build', {
                'build_id': build.id
            })

            build.task_id = taskid
            build.save()

            return redirect('build_view', id=build.id)

    return redirect('home')
Esempio n. 6
0
def build(build):
    c = RhumbaClient()

    print build

    return c.queue('sideloader', 'build', {})
Esempio n. 7
0
import sys
sys.path.append('..')

from rhumba.client import RhumbaClient

rc = RhumbaClient()

for i in range(int(sys.argv[1])):
    rc.queue('testqueue', 'test', {'count': i})