mirror of
https://github.com/clearml/clearml-agent
synced 2025-01-31 09:06:52 +00:00
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
import requests
|
|
|
|
import six
|
|
|
|
from . import jsonmodels
|
|
from .apimodel import ApiModel
|
|
from .datamodel import NonStrictDataModelMixin
|
|
|
|
|
|
class FloatOrStringField(jsonmodels.fields.BaseField):
|
|
|
|
"""String field."""
|
|
|
|
types = (float, six.string_types,)
|
|
|
|
|
|
class Response(ApiModel, NonStrictDataModelMixin):
|
|
pass
|
|
|
|
|
|
class _ResponseEndpoint(jsonmodels.models.Base):
|
|
name = jsonmodels.fields.StringField()
|
|
requested_version = FloatOrStringField()
|
|
actual_version = FloatOrStringField()
|
|
|
|
|
|
class ResponseMeta(jsonmodels.models.Base):
|
|
@property
|
|
def is_valid(self):
|
|
return self._is_valid
|
|
|
|
@classmethod
|
|
def from_raw_data(cls, status_code, text, endpoint=None):
|
|
return cls(is_valid=False, result_code=status_code, result_subcode=0, result_msg=text,
|
|
endpoint=_ResponseEndpoint(name=(endpoint or 'unknown')))
|
|
|
|
def __init__(self, is_valid=True, **kwargs):
|
|
super(ResponseMeta, self).__init__(**kwargs)
|
|
self._is_valid = is_valid
|
|
|
|
id = jsonmodels.fields.StringField(required=True)
|
|
trx = jsonmodels.fields.StringField(required=True)
|
|
endpoint = jsonmodels.fields.EmbeddedField([_ResponseEndpoint], required=True)
|
|
result_code = jsonmodels.fields.IntField(required=True)
|
|
result_subcode = jsonmodels.fields.IntField()
|
|
result_msg = jsonmodels.fields.StringField(required=True)
|
|
error_stack = jsonmodels.fields.StringField()
|
|
|
|
def __str__(self):
|
|
if self.result_code == requests.codes.ok:
|
|
return "<%d: %s/v%s>" % (self.result_code, self.endpoint.name, self.endpoint.actual_version)
|
|
elif self._is_valid:
|
|
return "<%d/%d: %s/v%s (%s)>" % (self.result_code, self.result_subcode, self.endpoint.name,
|
|
self.endpoint.actual_version, self.result_msg)
|
|
return "<%d/%d: %s (%s)>" % (self.result_code, self.result_subcode, self.endpoint.name, self.result_msg)
|