class TaskSerializer(ModelSerializer): _href = IdentityField(view_name='tasks-detail') state = serializers.CharField( help_text=_("The current state of the task. The possible values include:" " 'waiting', 'skipped', 'running', 'completed', 'failed' and 'canceled'."), read_only=True ) started_at = serializers.DateTimeField( help_text=_("Timestamp of the when this task started execution."), read_only=True ) finished_at = serializers.DateTimeField( help_text=_("Timestamp of the when this task stopped execution."), read_only=True ) non_fatal_errors = serializers.JSONField( help_text=_("A JSON Object of non-fatal errors encountered during the execution of this " "task."), read_only=True ) error = serializers.JSONField( help_text=_("A JSON Object of a fatal error encountered during the execution of this " "task."), read_only=True ) worker = RelatedField( help_text=_("The worker associated with this task." " This field is empty if a worker is not yet assigned."), read_only=True, view_name='workers-detail' ) parent = RelatedField( help_text=_("The parent task that spawned this task."), read_only=True, view_name='tasks-detail' ) spawned_tasks = RelatedField( help_text=_("Any tasks spawned by this task."), many=True, read_only=True, view_name='tasks-detail' ) progress_reports = ProgressReportSerializer( many=True, read_only=True ) created_resources = CreatedResourceSerializer( help_text=_('Resources created by this task.'), many=True, read_only=True, view_name='None' # This is a polymorphic field. The serializer does not need a view name. ) class Meta: model = models.Task fields = ModelSerializer.Meta.fields + ('state', 'started_at', 'finished_at', 'non_fatal_errors', 'error', 'worker', 'parent', 'spawned_tasks', 'progress_reports', 'created_resources')
class TaskSerializer(serializers.ModelSerializer): created_at = serializers.DateTimeField(source='pulp_created') updated_at = serializers.DateTimeField(source='pulp_last_updated') worker = serializers.SerializerMethodField() repository = serializers.SerializerMethodField() progress_reports = ProgressReportSerializer(many=True, read_only=True) pulp_id = serializers.UUIDField(source='pk') name = serializers.CharField() state = serializers.CharField() started_at = serializers.DateTimeField() finished_at = serializers.DateTimeField() @extend_schema_field(Optional[Dict[str, Any]]) def get_worker(self, obj): if obj.worker: return { 'name': obj.worker.name, 'missing': obj.worker.missing, 'last_heartbeat': obj.worker.last_heartbeat, } @extend_schema_field(Optional[str]) def get_repository(self, obj): sync_task = CollectionSyncTask.objects.filter(task=obj).first() if sync_task: return sync_task.repository.name class Meta: model = Task ref_name = "Task" fields = ( 'pulp_id', 'name', 'created_at', 'updated_at', 'finished_at', 'started_at', 'state', 'error', 'worker', 'parent_task', 'child_tasks', 'repository', 'progress_reports', )
class TaskSerializer(ModelSerializer): pulp_href = IdentityField(view_name="tasks-detail") state = serializers.CharField( help_text=_( "The current state of the task. The possible values include:" " 'waiting', 'skipped', 'running', 'completed', 'failed', 'canceled' and 'canceling'." ), read_only=True, ) name = serializers.CharField(help_text=_("The name of task.")) logging_cid = serializers.CharField( help_text=_("The logging correlation id associated with this task") ) started_at = serializers.DateTimeField( help_text=_("Timestamp of the when this task started execution."), read_only=True ) finished_at = serializers.DateTimeField( help_text=_("Timestamp of the when this task stopped execution."), read_only=True ) error = serializers.DictField( child=serializers.JSONField(), help_text=_( "A JSON Object of a fatal error encountered during the execution of this task." ), read_only=True, ) worker = RelatedField( help_text=_( "The worker associated with this task." " This field is empty if a worker is not yet assigned." ), read_only=True, view_name="workers-detail", ) parent_task = RelatedField( help_text=_("The parent task that spawned this task."), read_only=True, view_name="tasks-detail", ) child_tasks = RelatedField( help_text=_("Any tasks spawned by this task."), many=True, read_only=True, view_name="tasks-detail", ) task_group = RelatedField( help_text=_("The task group that this task is a member of."), read_only=True, view_name="task-groups-detail", ) progress_reports = ProgressReportSerializer(many=True, read_only=True) created_resources = CreatedResourceSerializer( help_text=_("Resources created by this task."), many=True, read_only=True, view_name="None", # This is a polymorphic field. The serializer does not need a view name. ) reserved_resources_record = serializers.ListField( child=serializers.CharField(), help_text=_("A list of resources required by that task."), read_only=True, ) class Meta: model = models.Task fields = ModelSerializer.Meta.fields + ( "state", "name", "logging_cid", "started_at", "finished_at", "error", "worker", "parent_task", "child_tasks", "task_group", "progress_reports", "created_resources", "reserved_resources_record", )