Merge "model: change playbook.completed to playbook.status"

This commit is contained in:
Zuul 2018-10-16 19:41:35 +00:00 committed by Gerrit Code Review
commit fd9ebc2795
4 changed files with 29 additions and 8 deletions

View File

@ -1,4 +1,4 @@
# Generated by Django 2.1.1 on 2018-10-15 14:51
# Generated by Django 2.1.2 on 2018-10-16 00:43
from django.db import migrations, models
import django.db.models.deletion
@ -91,7 +91,7 @@ class Migration(migrations.Migration):
('ended', models.DateTimeField(blank=True, null=True)),
('name', models.CharField(max_length=255, null=True)),
('ansible_version', models.CharField(max_length=255)),
('completed', models.BooleanField(default=False)),
('status', models.CharField(choices=[('unknown', 'unknown'), ('running', 'running'), ('completed', 'completed'), ('failed', 'failed')], default='unknown', max_length=25)),
('arguments', models.BinaryField(max_length=4294967295)),
('file', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='playbooks', to='api.File')),
('files', models.ManyToManyField(to='api.File')),

View File

@ -109,9 +109,16 @@ class Playbook(Duration):
class Meta:
db_table = "playbooks"
# A playbook in ARA can be running (in progress), completed (succeeded) or failed.
UNKNOWN = "unknown"
RUNNING = "running"
COMPLETED = "completed"
FAILED = "failed"
STATUS = ((UNKNOWN, "unknown"), (RUNNING, "running"), (COMPLETED, "completed"), (FAILED, "failed"))
name = models.CharField(max_length=255, null=True)
ansible_version = models.CharField(max_length=255)
completed = models.BooleanField(default=False)
status = models.CharField(max_length=25, choices=STATUS, default=UNKNOWN)
arguments = models.BinaryField(max_length=(2 ** 32) - 1)
file = models.ForeignKey(File, on_delete=models.CASCADE, related_name="playbooks")
files = models.ManyToManyField(File)

View File

@ -59,7 +59,7 @@ class PlaybookFactory(factory.DjangoModelFactory):
model = models.Playbook
ansible_version = "2.4.0"
completed = True
status = "running"
arguments = utils.compressed_obj(PLAYBOOK_ARGUMENTS)
file = factory.SubFactory(FileFactory)

View File

@ -42,6 +42,7 @@ class PlaybookTestCase(APITestCase):
playbook.refresh_from_db()
self.assertEqual(playbook.name, "serializer-playbook")
self.assertEqual(playbook.ansible_version, "2.4.0")
self.assertEqual(playbook.status, "unknown")
def test_playbook_serializer_compress_arguments(self):
serializer = serializers.PlaybookSerializer(
@ -82,18 +83,31 @@ class PlaybookTestCase(APITestCase):
self.assertEqual(0, models.Playbook.objects.count())
request = self.client.post(
"/api/v1/playbooks",
{"ansible_version": "2.4.0", "file": {"path": "/path/playbook.yml", "content": factories.FILE_CONTENTS}},
{
"ansible_version": "2.4.0",
"status": "running",
"file": {"path": "/path/playbook.yml", "content": factories.FILE_CONTENTS},
},
)
self.assertEqual(201, request.status_code)
self.assertEqual(1, models.Playbook.objects.count())
self.assertEqual(request.data["status"], "running")
def test_partial_update_playbook(self):
playbook = factories.PlaybookFactory()
self.assertNotEqual("2.3.0", playbook.ansible_version)
request = self.client.patch("/api/v1/playbooks/%s" % playbook.id, {"ansible_version": "2.3.0"})
self.assertNotEqual("completed", playbook.status)
request = self.client.patch("/api/v1/playbooks/%s" % playbook.id, {"status": "completed"})
self.assertEqual(200, request.status_code)
playbook_updated = models.Playbook.objects.get(id=playbook.id)
self.assertEqual("2.3.0", playbook_updated.ansible_version)
self.assertEqual("completed", playbook_updated.status)
def test_update_wrong_playbook_status(self):
playbook = factories.PlaybookFactory()
self.assertNotEqual("wrong", playbook.status)
request = self.client.patch("/api/v1/playbooks/%s" % playbook.id, {"status": "wrong"})
self.assertEqual(400, request.status_code)
playbook_updated = models.Playbook.objects.get(id=playbook.id)
self.assertNotEqual("wrong", playbook_updated.status)
def test_get_playbook(self):
playbook = factories.PlaybookFactory()