Added FK to playbook to the Task and Result models.

Change-Id: I7c40239cac40a41f120df9c7adcd434765518813
This commit is contained in:
Florian Apolloner 2018-10-15 18:08:15 +02:00
parent 6158d79b34
commit 031e757979
5 changed files with 22 additions and 4 deletions

View File

@ -1,4 +1,4 @@
# Generated by Django 2.1.1 on 2018-10-14 16:18
# Generated by Django 2.1.1 on 2018-10-15 14:51
from django.db import migrations, models
import django.db.models.deletion
@ -127,6 +127,7 @@ class Migration(migrations.Migration):
('status', models.CharField(choices=[('ok', 'ok'), ('failed', 'failed'), ('skipped', 'skipped'), ('unreachable', 'unreachable'), ('changed', 'changed'), ('ignored', 'ignored'), ('unknown', 'unknown')], default='unknown', max_length=25)),
('content', models.BinaryField(max_length=4294967295)),
('host', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='api.Host')),
('playbook', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='api.Playbook')),
],
options={
'db_table': 'results',
@ -166,6 +167,7 @@ class Migration(migrations.Migration):
('completed', models.BooleanField(default=False)),
('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')),
('playbook', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='api.Playbook')),
],
options={
'db_table': 'tasks',

View File

@ -173,6 +173,7 @@ class Task(Duration):
play = models.ForeignKey(Play, on_delete=models.CASCADE, related_name="tasks")
file = models.ForeignKey(File, on_delete=models.CASCADE, related_name="tasks")
playbook = models.ForeignKey(Playbook, on_delete=models.CASCADE, related_name="tasks")
def __str__(self):
return "<Task %s:%s>" % (self.name, self.id)
@ -262,6 +263,7 @@ class Result(Duration):
content = models.BinaryField(max_length=(2 ** 32) - 1)
host = models.ForeignKey(Host, on_delete=models.CASCADE, related_name="results")
task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name="results")
playbook = models.ForeignKey(Playbook, on_delete=models.CASCADE, related_name="results")
def __str__(self):
return "<Result %s, %s>" % (self.id, self.status)

View File

@ -86,6 +86,7 @@ class TaskFactory(factory.DjangoModelFactory):
tags = utils.compressed_obj(TASK_TAGS)
play = factory.SubFactory(PlayFactory)
file = factory.SubFactory(FileFactory)
playbook = factory.SubFactory(PlaybookFactory)
class HostFactory(factory.DjangoModelFactory):
@ -106,6 +107,7 @@ class ResultFactory(factory.DjangoModelFactory):
status = "ok"
host = factory.SubFactory(HostFactory)
task = factory.SubFactory(TaskFactory)
playbook = factory.SubFactory(PlaybookFactory)
class RecordFactory(factory.DjangoModelFactory):

View File

@ -29,7 +29,9 @@ class ResultTestCase(APITestCase):
def test_result_serializer(self):
host = factories.HostFactory()
task = factories.TaskFactory()
serializer = serializers.ResultSerializer(data={"status": "skipped", "host": host.id, "task": task.id})
serializer = serializers.ResultSerializer(
data={"status": "skipped", "host": host.id, "task": task.id, "playbook": task.playbook.id}
)
serializer.is_valid()
result = serializer.save()
result.refresh_from_db()
@ -41,7 +43,7 @@ class ResultTestCase(APITestCase):
host = factories.HostFactory()
task = factories.TaskFactory()
serializer = serializers.ResultSerializer(
data={"host": host.id, "task": task.id, "content": factories.RESULT_CONTENTS}
data={"host": host.id, "task": task.id, "content": factories.RESULT_CONTENTS, "playbook": task.playbook.id}
)
serializer.is_valid()
result = serializer.save()
@ -75,7 +77,14 @@ class ResultTestCase(APITestCase):
task = factories.TaskFactory()
self.assertEqual(0, models.Result.objects.count())
request = self.client.post(
"/api/v1/results", {"status": "ok", "host": host.id, "task": task.id, "content": factories.RESULT_CONTENTS}
"/api/v1/results",
{
"status": "ok",
"host": host.id,
"task": task.id,
"content": factories.RESULT_CONTENTS,
"playbook": task.playbook.id,
},
)
self.assertEqual(201, request.status_code)
self.assertEqual(1, models.Result.objects.count())

View File

@ -41,6 +41,7 @@ class TaskTestCase(APITestCase):
"handler": False,
"play": play.id,
"file": file.id,
"playbook": play.playbook.id,
}
)
serializer.is_valid()
@ -61,6 +62,7 @@ class TaskTestCase(APITestCase):
"play": play.id,
"file": file.id,
"tags": factories.TASK_TAGS,
"playbook": play.playbook.id,
}
)
serializer.is_valid()
@ -104,6 +106,7 @@ class TaskTestCase(APITestCase):
"completed": True,
"play": play.id,
"file": file.id,
"playbook": play.playbook.id,
},
)
self.assertEqual(201, request.status_code)