1 from opnfv_testapi.models import base_models
2 from opnfv_testapi.tornado_swagger import swagger
5 def list_default(value):
6 return value if value else list()
9 def dict_default(value):
10 return value if value else dict()
14 class ScenarioTI(base_models.ModelBase):
15 def __init__(self, date=None, status='silver'):
19 def __eq__(self, other):
20 return (self.date == other.date and
21 self.status == other.status)
23 def __ne__(self, other):
24 return not self.__eq__(other)
28 class ScenarioScore(base_models.ModelBase):
29 def __init__(self, date=None, score='0'):
33 def __eq__(self, other):
34 return (self.date == other.date and
35 self.score == other.score)
37 def __ne__(self, other):
38 return not self.__eq__(other)
42 class ScenarioProject(base_models.ModelBase):
45 @ptype customs: C{list} of L{string}
47 @ptype scores: C{list} of L{ScenarioScore}
48 @property trust_indicators:
49 @ptype trust_indicators: C{list} of L{ScenarioTI}
55 trust_indicators=None):
56 self.project = project
57 self.customs = list_default(customs)
58 self.scores = list_default(scores)
59 self.trust_indicators = list_default(trust_indicators)
63 return {'scores': ScenarioScore,
64 'trust_indicators': ScenarioTI}
66 def __eq__(self, other):
67 return (self.project == other.project and
68 self._customs_eq(other) and
69 self._scores_eq(other) and
72 def __ne__(self, other):
73 return not self.__eq__(other)
75 def _customs_eq(self, other):
76 return set(self.customs) == set(other.customs)
78 def _scores_eq(self, other):
79 return self.scores == other.scores
81 def _ti_eq(self, other):
82 return self.trust_indicators == other.trust_indicators
86 class ScenarioVersion(base_models.ModelBase):
89 @ptype projects: C{list} of L{ScenarioProject}
91 def __init__(self, owner=None, version=None, projects=None):
93 self.version = version
94 self.projects = list_default(projects)
98 return {'projects': ScenarioProject}
100 def __eq__(self, other):
101 return (self.version == other.version and
102 self.owner == other.owner and
103 self._projects_eq(other))
105 def __ne__(self, other):
106 return not self.__eq__(other)
108 def _projects_eq(self, other):
109 for s_project in self.projects:
110 for o_project in other.projects:
111 if s_project.project == o_project.project:
112 if s_project != o_project:
119 class ScenarioInstaller(base_models.ModelBase):
122 @ptype versions: C{list} of L{ScenarioVersion}
124 def __init__(self, installer=None, versions=None):
125 self.installer = installer
126 self.versions = list_default(versions)
130 return {'versions': ScenarioVersion}
132 def __eq__(self, other):
133 return (self.installer == other.installer and self._versions_eq(other))
135 def __ne__(self, other):
136 return not self.__eq__(other)
138 def _versions_eq(self, other):
139 for s_version in self.versions:
140 for o_version in other.versions:
141 if s_version.version == o_version.version:
142 if s_version != o_version:
149 class ScenarioCreateRequest(base_models.ModelBase):
151 @property installers:
152 @ptype installers: C{list} of L{ScenarioInstaller}
154 def __init__(self, name='', installers=None):
156 self.installers = list_default(installers)
160 return {'installers': ScenarioInstaller}
164 class ScenarioChangeOwnerRequest(base_models.ModelBase):
165 def __init__(self, owner=None):
170 class ScenarioUpdateRequest(base_models.ModelBase):
171 def __init__(self, name=None):
176 class Scenario(base_models.ModelBase):
178 @property installers:
179 @ptype installers: C{list} of L{ScenarioInstaller}
181 def __init__(self, name='', create_date='', _id='', installers=None):
184 self.creation_date = create_date
185 self.installers = list_default(installers)
189 return {'installers': ScenarioInstaller}
191 def __ne__(self, other):
192 return not self.__eq__(other)
194 def __eq__(self, other):
195 return (self.name == other.name and self._installers_eq(other))
197 def _installers_eq(self, other):
198 for s_install in self.installers:
199 for o_install in other.installers:
200 if s_install.installer == o_install.installer:
201 if s_install != o_install:
208 class Scenarios(base_models.ModelBase):
211 @ptype scenarios: C{list} of L{Scenario}
214 self.scenarios = list()
218 return {'scenarios': Scenario}