1 from datetime import datetime
3 """Contains the bean models for the SlaManager xml/json types
7 class Agreement(object):
11 self.expirationtime = datetime.now()
20 "expirationtime={}, provider={}, consumer={}, service={})>"
22 repr(self.expirationtime),
27 def service_formatted(self):
28 return self.service.replace('_', ' ')
30 def testbed_formatted(self):
31 return self.template_id.replace('Service', ' - ')
33 class Property(object):
41 str_ = "<Property(name={}, servicename={}, metric={}, location={})>"
44 repr(self.servicename),
48 class GuaranteeTerm(object):
50 class GuaranteeScope(object):
56 return "<GuaranteeScope(servicename={}, scope={}>)".format(
57 repr(self.servicename),
61 class ServiceLevelObjective(object):
64 self.customservicelevel = ""
67 s = "<ServiceLevelObjective(kpiname={}, customservicelevel={})>"
70 repr(self.customservicelevel)
75 self.scopes = [] # item: GuaranteeScope
76 """:type : list[Agreement.GuaranteeTerm.GuaranteeScope]"""
77 self.servicelevelobjective = \
78 Agreement.GuaranteeTerm.ServiceLevelObjective()
81 s = "<GuaranteeTerm(scopes={}, servicelevelobjective={})>"
84 repr(self.servicelevelobjective)
88 """Simple bean model for a ws-agreement agreement/template
90 self.context = Agreement.Context()
91 self.agreement_id = ""
92 self.descriptionterms = {}
93 self.variables = {} # key: Property.name / value: Property
94 """:type : dict[str,Agreement.Property]"""
95 self.guaranteeterms = {} # key: GT.name / value: GT
96 """:type : dict[str,Agreement.GuaranteeTerm]"""
99 s = ("<Agreement(agreement_id={}, context={}, descriptionterms={}, " +
100 "variables={}, guaranteeterms={}>")
102 repr(self.agreement_id),
104 repr(self.descriptionterms),
105 repr(self.variables),
106 repr(self.guaranteeterms)
110 class Template(Agreement):
111 #egarrido this code has been copied from xifi and has not beeing tested
113 super(Template, self).__init__()
114 self.template_id = ""
117 s = ("<Template(template_id={}, context={}, descriptionterms={}, " +
118 "variables={}, guaranteeterms={}>")
120 repr(self.template_id),
122 repr(self.descriptionterms),
123 repr(self.variables),
124 repr(self.guaranteeterms)
128 class Enforcement(object):
130 """Simple bean model for an enforcement"""
131 self.agreement_id = ""
135 return ("<Enforcement(agreement_id={}, enabled={})>".format(
140 class AgreementStatus(object):
143 VIOLATED = "VIOLATED"
144 FULFILLED = "FULFILLED"
145 NON_DETERMINED = "NON_DETERMINED"
147 class GuaranteeTermStatus(object):
153 s = "<GuaranteeTermStatus(name='{}' status='{}')>"
154 return s.format(self.name, self.status)
157 self.agreement_id = ""
158 self.guaranteestatus = ""
159 self.guaranteeterms = []
163 "<AgreementStatus( agreement_id={}, guaranteestatus={}, " +
164 "guaranteeterms={})>").format(
166 self.guaranteestatus,
167 repr(self.guaranteeterms))
170 def json_decode(json_obj):
171 o = AgreementStatus()
172 o.agreement_id = json_obj["AgreementId"]
173 o.guaranteestatus = json_obj["guaranteestatus"]
175 for term in json_obj["guaranteeterms"]:
176 t = AgreementStatus.GuaranteeTermStatus()
177 t.name = term["name"]
178 t.status = term["status"]
179 o.guaranteeterms.append(t)
183 class Violation(object):
185 """Simple bean model for a violation"""
187 self.contract_uuid = ""
188 self.service_scope = ""
189 self.metric_name = ""
190 self.datetime = datetime.now()
191 self.actual_value = 0
194 return ("<Violation(uuid={}, agremeent_id={}, service_scope={}, " +
195 "metric_name={}, datetime={}, actual_value={})>".format(
205 class Provider(object):
207 """Simple bean model for a provider"""
212 return ("<Provider(uuid={}, name={})>".format(
217 xml = "<provider><uuid>{}</uuid><name>{}</name></provider>""".format(
225 """Creates a Provider object from a dict structure (e.g.
226 a deserialized json string)
229 json_obj = json.loads(json_data)
230 out = wsag_model.Provider.from_dict(json_obj)
232 result = Provider(d["uuid"], d["name"])