class DetailedHostSerializer(serializers.ModelSerializer): class Meta: model = models.Host fields = "__all__" playbook = SimplePlaybookSerializer(read_only=True) facts = ara_fields.CompressedObjectField(read_only=True)
class ListTaskSerializer(ItemCountSerializer, TaskPathSerializer): class Meta: model = models.Task exclude = ("created", "updated") tags = ara_fields.CompressedObjectField(read_only=True) play = serializers.PrimaryKeyRelatedField(read_only=True)
class DetailedRecordSerializer(serializers.ModelSerializer): class Meta: model = models.Record fields = "__all__" playbook = SimplePlaybookSerializer(read_only=True) value = ara_fields.CompressedObjectField(read_only=True)
class ListTaskSerializer(ItemCountSerializer, TaskPathSerializer): class Meta: model = models.Task fields = "__all__" tags = ara_fields.CompressedObjectField(read_only=True) play = serializers.PrimaryKeyRelatedField(read_only=True)
class ListPlaybookSerializer(DurationSerializer, ItemCountSerializer): class Meta: model = models.Playbook exclude = ("created", "updated") arguments = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT, read_only=True) labels = SimpleLabelSerializer(many=True, read_only=True, default=[])
class NestedPlayTaskSerializer(TaskPathSerializer): class Meta: model = models.Task exclude = ("playbook", "play", "created", "updated") tags = ara_fields.CompressedObjectField(read_only=True) results = NestedPlaybookResultSerializer(read_only=True, many=True) file = NestedPlaybookFileSerializer(read_only=True)
class ListPlaybookSerializer(ItemCountSerializer): class Meta: model = models.Playbook fields = "__all__" arguments = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT, read_only=True) labels = SimpleLabelSerializer(many=True, read_only=True, default=[])
class TaskSerializer(serializers.ModelSerializer): class Meta: model = models.Task fields = "__all__" tags = ara_fields.CompressedObjectField( default=ara_fields.EMPTY_LIST, help_text="A list containing Ansible tags")
class RecordSerializer(serializers.ModelSerializer): class Meta: model = models.Record fields = "__all__" value = ara_fields.CompressedObjectField( default=ara_fields.EMPTY_STRING, help_text="A string, list, dict, json or other formatted data")
class DetailedTaskSerializer(ItemCountSerializer, TaskPathSerializer): class Meta: model = models.Task fields = "__all__" playbook = SimplePlaybookSerializer(read_only=True) play = SimplePlaySerializer(read_only=True) file = SimpleFileSerializer(read_only=True) tags = ara_fields.CompressedObjectField(read_only=True)
class PlaybookSerializer(DurationSerializer): class Meta: model = models.Playbook fields = "__all__" arguments = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT) labels = ara_fields.CreatableSlugRelatedField( many=True, slug_field="name", queryset=models.Label.objects.all(), required=False )
class DetailedTaskSerializer(DurationSerializer, ItemCountSerializer, TaskPathSerializer): class Meta: model = models.Task fields = "__all__" playbook = SimplePlaybookSerializer(read_only=True) play = SimplePlaySerializer(read_only=True) file = SimpleFileSerializer(read_only=True) results = NestedPlaybookResultSerializer(many=True, read_only=True, default=[]) tags = ara_fields.CompressedObjectField(read_only=True)
class DetailedResultSerializer(ResultStatusSerializer): class Meta: model = models.Result fields = "__all__" playbook = SimplePlaybookSerializer(read_only=True) play = SimplePlaySerializer(read_only=True) task = SimpleTaskSerializer(read_only=True) host = SimpleHostSerializer(read_only=True) content = ara_fields.CompressedObjectField(read_only=True)
class ResultSerializer(serializers.ModelSerializer): class Meta: model = models.Result fields = "__all__" content = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT) delegated_to = serializers.SlugRelatedField( many=True, required=False, slug_field="id", queryset=models.Host.objects.all())
class DetailedPlaybookSerializer(DurationSerializer, ItemCountSerializer): class Meta: model = models.Playbook fields = "__all__" arguments = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT, read_only=True) labels = SimpleLabelSerializer(many=True, read_only=True, default=[]) plays = NestedPlaybookPlaySerializer(many=True, read_only=True, default=[]) hosts = SimpleHostSerializer(many=True, read_only=True, default=[]) files = SimpleFileSerializer(many=True, read_only=True, default=[]) records = NestedPlaybookRecordSerializer(many=True, read_only=True, default=[])
class NestedPlaybookTaskSerializer(serializers.ModelSerializer): class Meta: model = models.Task exclude = ("playbook", "created", "updated") tags = ara_fields.CompressedObjectField(read_only=True) file = NestedPlaybookFileSerializer(read_only=True) results = serializers.SerializerMethodField() @staticmethod def get_results(obj): results = obj.results.all().order_by("-id") return NestedPlaybookResultSerializer(results, many=True).data
class DetailedPlaybookSerializer(ItemCountSerializer): class Meta: model = models.Playbook fields = "__all__" arguments = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT, read_only=True) labels = SimpleLabelSerializer(many=True, read_only=True, default=[]) hosts = SimpleHostSerializer(many=True, read_only=True, default=[]) files = SimpleFileSerializer(many=True, read_only=True, default=[]) records = NestedPlaybookRecordSerializer(many=True, read_only=True, default=[]) plays = serializers.SerializerMethodField() @staticmethod def get_plays(obj): plays = obj.plays.all().order_by("-id") return NestedPlaybookPlaySerializer(plays, many=True).data
class HostSerializer(serializers.ModelSerializer): class Meta: model = models.Host fields = "__all__" facts = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT) def get_unique_together_validators(self): """ Hosts have a "unique together" constraint for host.name and play.id. We want to have a "get_or_create" facility and in order to do that, we must manage the validation during the creation, not before. Overriding this method effectively disables this validator. """ return [] def create(self, validated_data): host, created = models.Host.objects.get_or_create( name=validated_data["name"], playbook=validated_data["playbook"], defaults=validated_data ) return host
class ResultSerializer(serializers.ModelSerializer): class Meta: model = models.Result fields = "__all__" content = ara_fields.CompressedObjectField(default=ara_fields.EMPTY_DICT)
class SimpleTaskSerializer(ItemCountSerializer, TaskPathSerializer): class Meta: model = models.Task exclude = ("playbook", "play", "created", "updated") tags = ara_fields.CompressedObjectField(read_only=True)