Beispiel #1
0
def get_task(task_id):
    logger = g.logger.bind(operation="get_task", task_id=task_id)

    logger.debug("Getting job...")
    task = Task.get_by_task_id(task_id)

    if task is None:
        return return_error("Task not found.",
                            "get_task",
                            status=404,
                            logger=logger)

    logger.debug("Task retrieved successfully...")

    task_jobs = Job.objects(id__in=[str(job_id.id) for job_id in task.jobs])

    jobs = []

    for job in task_jobs:
        url = url_for("task.get_job",
                      task_id=task_id,
                      job_id=str(job.job_id),
                      _external=True)
        job = {
            "id": str(job.job_id),
            "createdAt": job.created_at.isoformat(),
            "url": url
        }
        jobs.append(job)

    return jsonify({"taskId": task_id, "jobs": jobs})
Beispiel #2
0
def test_enqueue12(client):
    """Test enqueue a job works with PUT"""

    with client.application.app_context():
        task_id = str(uuid4())
        job_id = str(uuid4())
        data = {"image": "ubuntu", "command": "ls"}
        response = client.put(
            f"/tasks/{task_id}/jobs/{job_id}/", data=dumps(data), follow_redirects=True
        )

        expect(response.status_code).to_equal(200)

        obj = loads(response.data)
        expect(obj).not_to_be_null()
        new_job_id = obj["jobId"]
        expect(new_job_id).to_equal(job_id)
        expect(obj["queueJobId"]).not_to_be_null()

        expect(obj["executionId"]).not_to_be_null()

        task = Task.get_by_task_id(obj["taskId"])
        expect(task).not_to_be_null()
        expect(task.jobs).not_to_be_empty()

        j = task.jobs[0]
        job = Job.objects(id=j.id).first()
        expect(str(job.job_id)).to_equal(job_id)

        expect(obj["taskUrl"]).to_equal(task.get_url())
        expect(obj).to_be_enqueued()

        count = Task.objects.count()
        expect(count).to_equal(1)
Beispiel #3
0
def test_enqueue1(client):
    """Test enqueue a job works"""

    with client.application.app_context():
        task_id = str(uuid4())
        data = {"image": "ubuntu", "command": "ls"}
        response = client.post(f"/tasks/{task_id}/",
                               data=dumps(data),
                               follow_redirects=True)

        expect(response.status_code).to_equal(200)
        obj = loads(response.data)

        expect(obj["taskUrl"]).to_equal(
            f"http://localhost:10000/tasks/{task_id}/")

        job_id = obj["jobId"]
        expect(job_id).not_to_be_null()

        expect(obj["jobUrl"]).to_equal(
            f"http://localhost:10000/tasks/{task_id}/jobs/{job_id}/")

        expect(obj["queueJobId"]).not_to_be_null()

        expect(obj["executionId"]).not_to_be_null()
        execution_id = obj["executionId"]

        expect(obj["executionUrl"]).to_equal(
            f"http://localhost:10000/tasks/{task_id}/jobs/{job_id}/executions/{execution_id}/"
        )

        task = Task.get_by_task_id(obj["taskId"])
        expect(task).not_to_be_null()
        expect(task.jobs).not_to_be_empty()

        j = task.jobs[0]
        job = Job.objects(id=j.id).first()
        expect(str(job.job_id)).to_equal(job_id)

        expect(obj["taskUrl"]).to_equal(task.get_url())
        expect(obj).to_be_enqueued()
        expect(obj).to_be_enqueued_with_value("status", "queued")

        expect(obj).to_be_enqueued_with_value("created_at")
        expect(obj).to_be_enqueued_with_value("enqueued_at")
        expect(obj).to_be_enqueued_with_value("data")
        expect(obj).to_be_enqueued_with_value("origin", "jobs")
        expect(obj).to_be_enqueued_with_value(
            "description",
            f"fastlane.worker.job.run_job('{obj['taskId']}', '{job_id}', '{execution_id}', 'ubuntu', 'ls')",
        )
        expect(obj).to_be_enqueued_with_value("timeout", "-1")

        count = Task.objects.count()
        expect(count).to_equal(1)
Beispiel #4
0
def test_enqueue2(client):
    """Test enqueue a job with the same task does not create a new task"""

    with client.application.app_context():
        task_id = str(uuid4())

        data = {"image": "ubuntu", "command": "ls"}

        options = dict(
            data=dumps(data),
            headers={"Content-Type": "application/json"},
            follow_redirects=True,
        )

        response = client.post(f"/tasks/{task_id}/", **options)
        expect(response.status_code).to_equal(200)

        obj = loads(response.data)
        job_id = obj["jobId"]
        expect(job_id).not_to_be_null()
        expect(obj["queueJobId"]).not_to_be_null()

        response = client.post(f"/tasks/{task_id}/", **options)
        expect(response.status_code).to_equal(200)
        obj = loads(response.data)
        job_id = obj["jobId"]
        expect(job_id).not_to_be_null()
        expect(obj["queueJobId"]).not_to_be_null()

        expect(obj).to_be_enqueued()

        task = Task.get_by_task_id(obj["taskId"])
        expect(task).not_to_be_null()
        expect(task.jobs).not_to_be_empty()

        count = Task.objects.count()
        expect(count).to_equal(1)