Add Tasks, Records and Plays to Playbook serializer

Change-Id: Ic2456f021107d9397ea561fbc9a60661c34b5f2c
This commit is contained in:
Guillaume Vincent 2019-01-15 11:28:57 +01:00
parent 6519a91289
commit ca5c065b18
2 changed files with 60 additions and 38 deletions

View File

@ -151,6 +151,54 @@ class LabelSerializer(serializers.ModelSerializer):
)
class TaskSerializer(DurationSerializer):
class Meta:
model = models.Task
fields = "__all__"
tags = CompressedObjectField(
default=zlib.compress(json.dumps([]).encode("utf8")), help_text="A JSON list containing Ansible tags"
)
class SimpleTaskSerializer(serializers.ModelSerializer):
class Meta:
model = models.Task
fields = ("id", "name")
class RecordSerializer(serializers.ModelSerializer):
class Meta:
model = models.Record
fields = "__all__"
value = CompressedObjectField(
default=zlib.compress(json.dumps("").encode("utf8")),
help_text="A string, list, dict, json or other formatted data",
)
class PlaySerializer(DurationSerializer):
class Meta:
model = models.Play
fields = "__all__"
hosts = HostSerializer(read_only=True, many=True)
results = ResultSerializer(read_only=True, many=True)
class SimplePlaySerializer(serializers.ModelSerializer):
class Meta:
model = models.Play
fields = "__all__"
class StatsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Stats
fields = "__all__"
class PlaybookSerializer(DurationSerializer):
class Meta:
model = models.Playbook
@ -160,6 +208,9 @@ class PlaybookSerializer(DurationSerializer):
files = FileSerializer(many=True, default=[])
hosts = HostSerializer(many=True, default=[])
labels = LabelSerializer(many=True, default=[])
tasks = SimpleTaskSerializer(many=True, read_only=True, default=[])
plays = SimplePlaySerializer(many=True, read_only=True, default=[])
records = RecordSerializer(many=True, read_only=True, default=[])
def create(self, validated_data):
# Create the playbook without the file and label references for now
@ -177,39 +228,3 @@ class PlaybookSerializer(DurationSerializer):
playbook.labels.add(models.Label.objects.create(**label))
return playbook
class PlaySerializer(DurationSerializer):
class Meta:
model = models.Play
fields = "__all__"
hosts = HostSerializer(read_only=True, many=True)
results = ResultSerializer(read_only=True, many=True)
class TaskSerializer(DurationSerializer):
class Meta:
model = models.Task
fields = "__all__"
tags = CompressedObjectField(
default=zlib.compress(json.dumps([]).encode("utf8")), help_text="A JSON list containing Ansible tags"
)
class RecordSerializer(serializers.ModelSerializer):
class Meta:
model = models.Record
fields = "__all__"
value = CompressedObjectField(
default=zlib.compress(json.dumps("").encode("utf8")),
help_text="A string, list, dict, json or other formatted data",
)
class StatsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Stats
fields = "__all__"

View File

@ -59,10 +59,17 @@ class PlaybookTestCase(APITestCase):
self.assertEqual(0, len(request.data["results"]))
def test_get_playbooks(self):
playbook = factories.PlaybookFactory()
expected_playbook = factories.PlaybookFactory()
request = self.client.get("/api/v1/playbooks")
self.assertEqual(1, len(request.data["results"]))
self.assertEqual(playbook.ansible_version, request.data["results"][0]["ansible_version"])
self.assertEqual(1, request.data["count"])
playbook = request.data["results"][0]
self.assertEqual(playbook["ansible_version"], expected_playbook.ansible_version)
self.assertEqual(len(playbook["files"]), 0)
self.assertEqual(len(playbook["hosts"]), 0)
self.assertEqual(len(playbook["tasks"]), 0)
self.assertEqual(len(playbook["records"]), 0)
self.assertEqual(len(playbook["plays"]), 0)
def test_delete_playbook(self):
playbook = factories.PlaybookFactory()