Merge "model: change task.completed to task.status"
This commit is contained in:
commit
d886b6012b
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 2.1.3 on 2018-11-14 19:34
|
# Generated by Django 2.1.3 on 2018-11-14 19:40
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
@ -164,7 +164,7 @@ class Migration(migrations.Migration):
|
||||||
('lineno', models.IntegerField()),
|
('lineno', models.IntegerField()),
|
||||||
('tags', models.BinaryField(max_length=4294967295)),
|
('tags', models.BinaryField(max_length=4294967295)),
|
||||||
('handler', models.BooleanField()),
|
('handler', models.BooleanField()),
|
||||||
('completed', models.BooleanField(default=False)),
|
('status', models.CharField(choices=[('unknown', 'unknown'), ('running', 'running'), ('completed', 'completed')], default='unknown', max_length=25)),
|
||||||
('file', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.File')),
|
('file', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.File')),
|
||||||
('play', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.Play')),
|
('play', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.Play')),
|
||||||
('playbook', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.Playbook')),
|
('playbook', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.Playbook')),
|
||||||
|
|
|
@ -177,12 +177,19 @@ class Task(Duration):
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = "tasks"
|
db_table = "tasks"
|
||||||
|
|
||||||
|
# A task in ARA can be running (in progress) or completed (regardless of success or failure)
|
||||||
|
# Actual task statuses (such as failed, skipped, etc.) are actually in the Results table.
|
||||||
|
UNKNOWN = "unknown"
|
||||||
|
RUNNING = "running"
|
||||||
|
COMPLETED = "completed"
|
||||||
|
STATUS = ((UNKNOWN, "unknown"), (RUNNING, "running"), (COMPLETED, "completed"))
|
||||||
|
|
||||||
name = models.TextField(blank=True, null=True)
|
name = models.TextField(blank=True, null=True)
|
||||||
action = models.TextField()
|
action = models.TextField()
|
||||||
lineno = models.IntegerField()
|
lineno = models.IntegerField()
|
||||||
tags = models.BinaryField(max_length=(2 ** 32) - 1)
|
tags = models.BinaryField(max_length=(2 ** 32) - 1)
|
||||||
handler = models.BooleanField()
|
handler = models.BooleanField()
|
||||||
completed = models.BooleanField(default=False)
|
status = models.CharField(max_length=25, choices=STATUS, default=UNKNOWN)
|
||||||
|
|
||||||
play = models.ForeignKey(Play, on_delete=models.CASCADE, related_name="tasks")
|
play = models.ForeignKey(Play, on_delete=models.CASCADE, related_name="tasks")
|
||||||
file = models.ForeignKey(File, on_delete=models.CASCADE, related_name="tasks")
|
file = models.ForeignKey(File, on_delete=models.CASCADE, related_name="tasks")
|
||||||
|
|
|
@ -79,7 +79,7 @@ class TaskFactory(factory.DjangoModelFactory):
|
||||||
model = models.Task
|
model = models.Task
|
||||||
|
|
||||||
name = "test task"
|
name = "test task"
|
||||||
completed = True
|
status = "running"
|
||||||
action = "setup"
|
action = "setup"
|
||||||
lineno = 2
|
lineno = 2
|
||||||
handler = False
|
handler = False
|
||||||
|
|
|
@ -37,7 +37,7 @@ class TaskTestCase(APITestCase):
|
||||||
"name": "serializer",
|
"name": "serializer",
|
||||||
"action": "test",
|
"action": "test",
|
||||||
"lineno": 2,
|
"lineno": 2,
|
||||||
"completed": True,
|
"status": "completed",
|
||||||
"handler": False,
|
"handler": False,
|
||||||
"play": play.id,
|
"play": play.id,
|
||||||
"file": file.id,
|
"file": file.id,
|
||||||
|
@ -48,6 +48,7 @@ class TaskTestCase(APITestCase):
|
||||||
task = serializer.save()
|
task = serializer.save()
|
||||||
task.refresh_from_db()
|
task.refresh_from_db()
|
||||||
self.assertEqual(task.name, "serializer")
|
self.assertEqual(task.name, "serializer")
|
||||||
|
self.assertEqual(task.status, "completed")
|
||||||
|
|
||||||
def test_task_serializer_compress_tags(self):
|
def test_task_serializer_compress_tags(self):
|
||||||
play = factories.PlayFactory()
|
play = factories.PlayFactory()
|
||||||
|
@ -57,7 +58,7 @@ class TaskTestCase(APITestCase):
|
||||||
"name": "compress",
|
"name": "compress",
|
||||||
"action": "test",
|
"action": "test",
|
||||||
"lineno": 2,
|
"lineno": 2,
|
||||||
"completed": True,
|
"status": "running",
|
||||||
"handler": False,
|
"handler": False,
|
||||||
"play": play.id,
|
"play": play.id,
|
||||||
"file": file.id,
|
"file": file.id,
|
||||||
|
@ -103,7 +104,7 @@ class TaskTestCase(APITestCase):
|
||||||
"action": "test",
|
"action": "test",
|
||||||
"lineno": 2,
|
"lineno": 2,
|
||||||
"handler": False,
|
"handler": False,
|
||||||
"completed": True,
|
"status": "running",
|
||||||
"play": play.id,
|
"play": play.id,
|
||||||
"file": file.id,
|
"file": file.id,
|
||||||
"playbook": play.playbook.id,
|
"playbook": play.playbook.id,
|
||||||
|
@ -140,3 +141,11 @@ class TaskTestCase(APITestCase):
|
||||||
task = factories.TaskFactory(started=started, ended=ended)
|
task = factories.TaskFactory(started=started, ended=ended)
|
||||||
request = self.client.get("/api/v1/tasks/%s" % task.id)
|
request = self.client.get("/api/v1/tasks/%s" % task.id)
|
||||||
self.assertEqual(request.data["duration"], datetime.timedelta(0, 3600))
|
self.assertEqual(request.data["duration"], datetime.timedelta(0, 3600))
|
||||||
|
|
||||||
|
def test_update_wrong_task_status(self):
|
||||||
|
task = factories.TaskFactory()
|
||||||
|
self.assertNotEqual("wrong", task.status)
|
||||||
|
request = self.client.patch("/api/v1/tasks/%s" % task.id, {"status": "wrong"})
|
||||||
|
self.assertEqual(400, request.status_code)
|
||||||
|
task_updated = models.Task.objects.get(id=task.id)
|
||||||
|
self.assertNotEqual("wrong", task_updated.status)
|
||||||
|
|
Loading…
Reference in New Issue