from . import fields
from .base import Model
from .custom_response import CustomResponseMixin
from .incentives import Schedule, Script, ScriptEndpoint, Trigger
class ScriptTrace(CustomResponseMixin, Model):
"""
[docs] :ivar status: :class:`~syncano.models.fields.ChoiceField`
:ivar links: :class:`~syncano.models.fields.HyperlinkedField`
:ivar executed_at: :class:`~syncano.models.fields.DateTimeField`
:ivar result: :class:`~syncano.models.fields.StringField`
:ivar duration: :class:`~syncano.models.fields.IntegerField`
"""
STATUS_CHOICES = (
{'display_name': 'Success', 'value': 'success'},
{'display_name': 'Failure', 'value': 'failure'},
{'display_name': 'Timeout', 'value': 'timeout'},
{'display_name': 'Processing', 'value': 'processing'},
{'display_name': 'Pending', 'value': 'pending'},
)
status = fields.ChoiceField(choices=STATUS_CHOICES, read_only=True, required=False)
links = fields.LinksField()
executed_at = fields.DateTimeField(read_only=True, required=False)
result = fields.JSONField(read_only=True, required=False)
duration = fields.IntegerField(read_only=True, required=False)
class Meta:
parent = Script
endpoints = {
'detail': {
'methods': ['get'],
'path': '/traces/{id}/',
},
'list': {
'methods': ['get', 'post'],
'path': '/traces/',
}
}
class ScheduleTrace(Model):
"""
[docs] :ivar status: :class:`~syncano.models.fields.ChoiceField`
:ivar links: :class:`~syncano.models.fields.HyperlinkedField`
:ivar executed_at: :class:`~syncano.models.fields.DateTimeField`
:ivar result: :class:`~syncano.models.fields.StringField`
:ivar duration: :class:`~syncano.models.fields.IntegerField`
"""
STATUS_CHOICES = (
{'display_name': 'Success', 'value': 'success'},
{'display_name': 'Failure', 'value': 'failure'},
{'display_name': 'Timeout', 'value': 'timeout'},
{'display_name': 'Pending', 'value': 'pending'},
)
status = fields.ChoiceField(choices=STATUS_CHOICES, read_only=True, required=False)
links = fields.LinksField()
executed_at = fields.DateTimeField(read_only=True, required=False)
result = fields.StringField(read_only=True, required=False)
duration = fields.IntegerField(read_only=True, required=False)
class Meta:
parent = Schedule
endpoints = {
'detail': {
'methods': ['get'],
'path': '/traces/{id}/',
},
'list': {
'methods': ['get', 'post'],
'path': '/traces/',
}
}
class TriggerTrace(Model):
"""
[docs] :ivar status: :class:`~syncano.models.fields.ChoiceField`
:ivar links: :class:`~syncano.models.fields.HyperlinkedField`
:ivar executed_at: :class:`~syncano.models.fields.DateTimeField`
:ivar result: :class:`~syncano.models.fields.StringField`
:ivar duration: :class:`~syncano.models.fields.IntegerField`
"""
STATUS_CHOICES = (
{'display_name': 'Success', 'value': 'success'},
{'display_name': 'Failure', 'value': 'failure'},
{'display_name': 'Timeout', 'value': 'timeout'},
{'display_name': 'Pending', 'value': 'pending'},
)
LINKS = (
{'type': 'detail', 'name': 'self'},
)
status = fields.ChoiceField(choices=STATUS_CHOICES, read_only=True, required=False)
links = fields.LinksField()
executed_at = fields.DateTimeField(read_only=True, required=False)
result = fields.StringField(read_only=True, required=False)
duration = fields.IntegerField(read_only=True, required=False)
class Meta:
parent = Trigger
endpoints = {
'detail': {
'methods': ['get'],
'path': '/traces/{id}/',
},
'list': {
'methods': ['get', 'post'],
'path': '/traces/',
}
}
class ScriptEndpointTrace(CustomResponseMixin, Model):
"""
[docs] :ivar status: :class:`~syncano.models.fields.ChoiceField`
:ivar links: :class:`~syncano.models.fields.HyperlinkedField`
:ivar executed_at: :class:`~syncano.models.fields.DateTimeField`
:ivar result: :class:`~syncano.models.fields.StringField`
:ivar duration: :class:`~syncano.models.fields.IntegerField`
"""
STATUS_CHOICES = (
{'display_name': 'Success', 'value': 'success'},
{'display_name': 'Failure', 'value': 'failure'},
{'display_name': 'Timeout', 'value': 'timeout'},
{'display_name': 'Pending', 'value': 'pending'},
)
status = fields.ChoiceField(choices=STATUS_CHOICES, read_only=True, required=False)
links = fields.LinksField()
executed_at = fields.DateTimeField(read_only=True, required=False)
result = fields.JSONField(read_only=True, required=False)
duration = fields.IntegerField(read_only=True, required=False)
class Meta:
parent = ScriptEndpoint
endpoints = {
'detail': {
'methods': ['get'],
'path': '/traces/{id}/',
},
'list': {
'methods': ['get', 'post'],
'path': '/traces/',
}
}