# feng.xiaowei@zte.com.cn add CreateResponse 5-19-2016\r
# feng.xiaowei@zte.com.cn mv TestCase to testcase_models.py 5-20-2016\r
# feng.xiaowei@zte.com.cn mv TestResut to result_models.py 5-23-2016\r
+# feng.xiaowei@zte.com.cn add ModelBase 12-20-2016\r
##############################################################################\r
+import copy\r
+\r
from opnfv_testapi.tornado_swagger import swagger\r
\r
\r
-@swagger.model()\r
-class CreateResponse(object):\r
- def __init__(self, href=''):\r
- self.href = href\r
+class ModelBase(object):\r
+\r
+ def _format(self, excludes):\r
+ new_obj = copy.deepcopy(self)\r
+ dicts = new_obj.__dict__\r
+ print self, self.__class__\r
+ for k in dicts.keys():\r
+ if k in excludes:\r
+ del dicts[k]\r
+ elif dicts[k]:\r
+ if hasattr(dicts[k], 'format'):\r
+ dicts[k] = dicts[k].format()\r
+ elif isinstance(dicts[k], list):\r
+ hs = []\r
+ for h in dicts[k]:\r
+ hs.append(h.format())\r
+ dicts[k] = hs\r
+ elif not isinstance(dicts[k], (str, int, float, dict)):\r
+ dicts[k] = str(dicts[k])\r
+ return dicts\r
+\r
+ def format(self):\r
+ return self._format(['_id'])\r
+\r
+ def format_http(self):\r
+ return self._format([])\r
\r
@staticmethod\r
- def from_dict(res_dict):\r
- if res_dict is None:\r
+ def attr_parser():\r
+ return {}\r
+\r
+ @classmethod\r
+ def from_dict(cls, a_dict):\r
+ if a_dict is None:\r
return None\r
\r
- res = CreateResponse()\r
- res.href = res_dict.get('href')\r
- return res\r
+ attr_parser = cls.attr_parser()\r
+ t = cls()\r
+ for k, v in a_dict.iteritems():\r
+ value = v\r
+ if isinstance(v, dict) and k in attr_parser:\r
+ value = attr_parser[k].from_dict(v)\r
+ elif isinstance(v, list) and k in attr_parser:\r
+ value = []\r
+ for item in v:\r
+ value.append(attr_parser[k].from_dict(item))\r
\r
- def format(self):\r
- return {'href': self.href}\r
+ t.__setattr__(k, value)\r
+\r
+ return t\r
+\r
+\r
+class CreateResponse(ModelBase):\r
+ def __init__(self, href=''):\r
+ self.href = href\r
\r
\r
@swagger.model()\r
-class Versions(object):\r
+class Versions(ModelBase):\r
"""\r
@property versions:\r
@ptype versions: C{list} of L{Version}\r
"""\r
+\r
def __init__(self):\r
self.versions = list()\r
\r
@staticmethod\r
- def from_dict(res_dict):\r
- if res_dict is None:\r
- return None\r
-\r
- res = Versions()\r
- for version in res_dict.get('versions'):\r
- res.versions.append(Version.from_dict(version))\r
- return res\r
+ def attr_parser():\r
+ return {'versions': Version}\r
\r
\r
@swagger.model()\r
-class Version(object):\r
+class Version(ModelBase):\r
def __init__(self, version=None, description=None):\r
self.version = version\r
self.description = description\r
-\r
- @staticmethod\r
- def from_dict(a_dict):\r
- if a_dict is None:\r
- return None\r
-\r
- ver = Version()\r
- ver.version = a_dict.get('version')\r
- ver.description = str(a_dict.get('description'))\r
- return ver\r
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+import models
from opnfv_testapi.tornado_swagger import swagger
+
# name: name of the POD e.g. zte-1
# mode: metal or virtual
# details: any detail
@swagger.model()
-class PodCreateRequest(object):
+class PodCreateRequest(models.ModelBase):
def __init__(self, name, mode='', details='', role=""):
self.name = name
self.mode = mode
self.details = details
self.role = role
- def format(self):
- return {
- "name": self.name,
- "mode": self.mode,
- "details": self.details,
- "role": self.role,
- }
-
@swagger.model()
-class Pod(PodCreateRequest):
+class Pod(models.ModelBase):
def __init__(self,
name='', mode='', details='',
role="", _id='', create_date=''):
- super(Pod, self).__init__(name, mode, details, role)
+ self.name = name
+ self.mode = mode
+ self.details = details
+ self.role = role
self._id = _id
self.creation_date = create_date
- @staticmethod
- def from_dict(pod_dict):
- if pod_dict is None:
- return None
-
- p = Pod()
- p._id = pod_dict.get('_id')
- p.creation_date = str(pod_dict.get('creation_date'))
- p.name = pod_dict.get('name')
- p.mode = pod_dict.get('mode')
- p.details = pod_dict.get('details')
- p.role = pod_dict.get('role')
- return p
-
- def format(self):
- f = super(Pod, self).format()
- f['creation_date'] = str(self.creation_date)
- return f
-
- def format_http(self):
- f = self.format()
- f['_id'] = str(self._id)
- return f
-
@swagger.model()
-class Pods(object):
+class Pods(models.ModelBase):
"""
@property pods:
@ptype pods: C{list} of L{Pod}
self.pods = list()
@staticmethod
- def from_dict(res_dict):
- if res_dict is None:
- return None
-
- res = Pods()
- for pod in res_dict.get('pods'):
- res.pods.append(Pod.from_dict(pod))
- return res
+ def attr_parser():
+ return {'pods': Pod}
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+import models
from opnfv_testapi.tornado_swagger import swagger
@swagger.model()
-class ProjectCreateRequest(object):
+class ProjectCreateRequest(models.ModelBase):
def __init__(self, name, description=''):
self.name = name
self.description = description
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- }
-
@swagger.model()
-class ProjectUpdateRequest(object):
+class ProjectUpdateRequest(models.ModelBase):
def __init__(self, name='', description=''):
self.name = name
self.description = description
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- }
-
@swagger.model()
-class Project(object):
+class Project(models.ModelBase):
def __init__(self,
name=None, _id=None, description=None, create_date=None):
self._id = _id
self.description = description
self.creation_date = create_date
- @staticmethod
- def from_dict(res_dict):
-
- if res_dict is None:
- return None
-
- t = Project()
- t._id = res_dict.get('_id')
- t.creation_date = res_dict.get('creation_date')
- t.name = res_dict.get('name')
- t.description = res_dict.get('description')
-
- return t
-
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- "creation_date": str(self.creation_date)
- }
-
- def format_http(self):
- return {
- "_id": str(self._id),
- "name": self.name,
- "description": self.description,
- "creation_date": str(self.creation_date),
- }
-
@swagger.model()
-class Projects(object):
+class Projects(models.ModelBase):
"""
@property projects:
@ptype projects: C{list} of L{Project}
self.projects = list()
@staticmethod
- def from_dict(res_dict):
- if res_dict is None:
- return None
-
- res = Projects()
- for project in res_dict.get('projects'):
- res.projects.append(Project.from_dict(project))
- return res
+ def attr_parser():
+ return {'projects': Project}
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+import models
from opnfv_testapi.tornado_swagger import swagger
@swagger.model()
-class TIHistory(object):
+class TIHistory(models.ModelBase):
"""
@ptype step: L{float}
"""
self.date = date
self.step = step
- def format(self):
- return {
- "date": self.date,
- "step": self.step
- }
-
- @staticmethod
- def from_dict(a_dict):
- if a_dict is None:
- return None
-
- return TIHistory(a_dict.get('date'), a_dict.get('step'))
-
@swagger.model()
-class TI(object):
+class TI(models.ModelBase):
"""
@property histories: trust_indicator update histories
@ptype histories: C{list} of L{TIHistory}
self.current = current
self.histories = list()
- def format(self):
- hs = []
- for h in self.histories:
- hs.append(h.format())
-
- return {
- "current": self.current,
- "histories": hs
- }
-
@staticmethod
- def from_dict(a_dict):
- t = TI()
- if a_dict:
- t.current = a_dict.get('current')
- if 'histories' in a_dict.keys():
- for history in a_dict.get('histories', None):
- t.histories.append(TIHistory.from_dict(history))
- else:
- t.histories = []
- return t
+ def attr_parser():
+ return {'histories': TIHistory}
@swagger.model()
-class ResultCreateRequest(object):
+class ResultCreateRequest(models.ModelBase):
"""
@property trust_indicator:
@ptype trust_indicator: L{TI}
self.criteria = criteria
self.trust_indicator = trust_indicator if trust_indicator else TI(0)
- def format(self):
- return {
- "pod_name": self.pod_name,
- "project_name": self.project_name,
- "case_name": self.case_name,
- "installer": self.installer,
- "version": self.version,
- "start_date": self.start_date,
- "stop_date": self.stop_date,
- "details": self.details,
- "build_tag": self.build_tag,
- "scenario": self.scenario,
- "criteria": self.criteria,
- "trust_indicator": self.trust_indicator.format()
- }
-
@swagger.model()
-class ResultUpdateRequest(object):
+class ResultUpdateRequest(models.ModelBase):
"""
@property trust_indicator:
@ptype trust_indicator: L{TI}
def __init__(self, trust_indicator=None):
self.trust_indicator = trust_indicator
- def format(self):
- return {
- "trust_indicator": self.trust_indicator.format(),
- }
-
@swagger.model()
-class TestResult(object):
+class TestResult(models.ModelBase):
"""
@property trust_indicator: used for long duration test case
@ptype trust_indicator: L{TI}
self.trust_indicator = trust_indicator
@staticmethod
- def from_dict(a_dict):
-
- if a_dict is None:
- return None
-
- t = TestResult()
- t._id = a_dict.get('_id')
- t.case_name = a_dict.get('case_name')
- t.pod_name = a_dict.get('pod_name')
- t.project_name = a_dict.get('project_name')
- t.start_date = str(a_dict.get('start_date'))
- t.stop_date = str(a_dict.get('stop_date'))
- t.details = a_dict.get('details')
- t.version = a_dict.get('version')
- t.installer = a_dict.get('installer')
- t.build_tag = a_dict.get('build_tag')
- t.scenario = a_dict.get('scenario')
- t.criteria = a_dict.get('criteria')
- t.trust_indicator = TI.from_dict(a_dict.get('trust_indicator'))
- return t
-
- def format(self):
- return {
- "case_name": self.case_name,
- "project_name": self.project_name,
- "pod_name": self.pod_name,
- "start_date": str(self.start_date),
- "stop_date": str(self.stop_date),
- "version": self.version,
- "installer": self.installer,
- "details": self.details,
- "build_tag": self.build_tag,
- "scenario": self.scenario,
- "criteria": self.criteria,
- "trust_indicator": self.trust_indicator.format()
- }
-
- def format_http(self):
- return {
- "_id": str(self._id),
- "case_name": self.case_name,
- "project_name": self.project_name,
- "pod_name": self.pod_name,
- "start_date": str(self.start_date),
- "stop_date": str(self.stop_date),
- "version": self.version,
- "installer": self.installer,
- "details": self.details,
- "build_tag": self.build_tag,
- "scenario": self.scenario,
- "criteria": self.criteria,
- "trust_indicator": self.trust_indicator.format()
- }
+ def attr_parser():
+ return {'trust_indicator': TI}
@swagger.model()
-class TestResults(object):
+class TestResults(models.ModelBase):
"""
- @property results:
+ @property rgit esults:
@ptype results: C{list} of L{TestResult}
"""
def __init__(self):
self.results = list()
@staticmethod
- def from_dict(a_dict):
- if a_dict is None:
- return None
-
- res = TestResults()
- for result in a_dict.get('results'):
- res.results.append(TestResult.from_dict(result))
- return res
+ def attr_parser():
+ return {'results': TestResult}
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+import models
from opnfv_testapi.tornado_swagger import swagger
@swagger.model()
-class TestcaseCreateRequest(object):
+class TestcaseCreateRequest(models.ModelBase):
def __init__(self, name, url=None, description=None,
tier=None, ci_loop=None, criteria=None,
blocking=None, dependencies=None, run=None,
self.version = version
self.trust = "Silver"
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- "url": self.url,
- }
-
@swagger.model()
-class TestcaseUpdateRequest(object):
+class TestcaseUpdateRequest(models.ModelBase):
def __init__(self, name=None, description=None, project_name=None,
tier=None, ci_loop=None, criteria=None,
blocking=None, dependencies=None, run=None,
self.version = version
self.trust = trust
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- "project_name": self.project_name,
- "tier": self.tier,
- "ci_loop": self.ci_loop,
- "criteria": self.criteria,
- "blocking": self.blocking,
- "dependencies": self.dependencies,
- "run": self.run,
- "domains": self.domains,
- "tags": self.tags,
- "version": self.version,
- "trust": self.trust
- }
-
@swagger.model()
-class Testcase(object):
+class Testcase(models.ModelBase):
def __init__(self, _id=None, name=None, project_name=None,
description=None, url=None, creation_date=None,
tier=None, ci_loop=None, criteria=None,
self.description = None
self.url = None
self.creation_date = None
- self.tier=None
- self.ci_loop=None
- self.criteria=None
- self.blocking=None
- self.dependencies=None
- self.run=None
- self.domains=None
- self.tags=None
- self.version=None
- self.trust=None
-
- @staticmethod
- def from_dict(a_dict):
-
- if a_dict is None:
- return None
-
- t = Testcase()
- t._id = a_dict.get('_id')
- t.project_name = a_dict.get('project_name')
- t.creation_date = a_dict.get('creation_date')
- t.name = a_dict.get('name')
- t.description = a_dict.get('description')
- t.url = a_dict.get('url')
- t.tier = a_dict.get('tier')
- t.ci_loop = a_dict.get('ci_loop')
- t.criteria = a_dict.get('criteria')
- t.blocking = a_dict.get('blocking')
- t.dependencies = a_dict.get('dependencies')
- t.run = a_dict.get('run')
- t.domains = a_dict.get('domains')
- t.tags = a_dict.get('tags')
- t.version = a_dict.get('version')
- t.trust = a_dict.get('trust')
-
- return t
-
- def format(self):
- return {
- "name": self.name,
- "description": self.description,
- "project_name": self.project_name,
- "creation_date": str(self.creation_date),
- "url": self.url,
- "tier": self.tier,
- "ci_loop": self.ci_loop,
- "criteria": self.criteria,
- "blocking": self.blocking,
- "dependencies": self.dependencies,
- "run": self.run,
- "domains": self.domains,
- "tags": self.tags,
- "version": self.version,
- "trust": self.trust
- }
-
- def format_http(self):
- return {
- "_id": str(self._id),
- "name": self.name,
- "project_name": self.project_name,
- "description": self.description,
- "creation_date": str(self.creation_date),
- "url": self.url,
- "tier": self.tier,
- "ci_loop": self.ci_loop,
- "criteria": self.criteria,
- "blocking": self.blocking,
- "dependencies": self.dependencies,
- "run": self.run,
- "domains": self.domains,
- "tags": self.tags,
- "version": self.version,
- "trust": self.trust
- }
+ self.tier = None
+ self.ci_loop = None
+ self.criteria = None
+ self.blocking = None
+ self.dependencies = None
+ self.run = None
+ self.domains = None
+ self.tags = None
+ self.version = None
+ self.trust = None
@swagger.model()
-class Testcases(object):
+class Testcases(models.ModelBase):
"""
@property testcases:
@ptype testcases: C{list} of L{Testcase}
self.testcases = list()
@staticmethod
- def from_dict(res_dict):
- if res_dict is None:
- return None
-
- res = Testcases()
- for testcase in res_dict.get('testcases'):
- res.testcases.append(Testcase.from_dict(testcase))
- return res
+ def attr_parser():
+ return {'testcases': Testcase}