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})
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)
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)
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)