X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sla%2Fslaclient%2Fwsag_model.py;fp=sla%2Fslaclient%2Fwsag_model.py;h=1c9bd41aa95959d5ee68573ee28523a4b0c0c034;hb=c99f1bd98ff355bd3f63b4929739ea5bd92cd6a3;hp=0000000000000000000000000000000000000000;hpb=e49329b43a640671476f2a793bde1d40b57e4d2e;p=unfold.git diff --git a/sla/slaclient/wsag_model.py b/sla/slaclient/wsag_model.py new file mode 100755 index 00000000..1c9bd41a --- /dev/null +++ b/sla/slaclient/wsag_model.py @@ -0,0 +1,233 @@ +from datetime import datetime + +"""Contains the bean models for the SlaManager xml/json types +""" + + +class Agreement(object): + + class Context(object): + def __init__(self): + self.expirationtime = datetime.now() + self.service = "" + self.initiator = "" + self.responder = "" + self.provider = "" + self.consumer = "" + + def __repr__(self): + s = "" + return s.format( + repr(self.expirationtime), + repr(self.provider), + repr(self.consumer), + repr(self.service)) + + def service_formatted(self): + return self.service.replace('_', ' ') + + def testbed_formatted(self): + return self.template_id.replace('Service', ' - ') + + class Property(object): + def __init__(self): + self.servicename = "" + self.name = "" + self.metric = "" + self.location = "" + + def __repr__(self): + str_ = "" + return str_.format( + repr(self.name), + repr(self.servicename), + repr(self.metric), + repr(self.location)) + + class GuaranteeTerm(object): + + class GuaranteeScope(object): + def __init__(self): + self.servicename = "" + self.scope = "" + + def __repr__(self): + return ")".format( + repr(self.servicename), + repr(self.scope) + ) + + class ServiceLevelObjective(object): + def __init__(self): + self.kpiname = "" + self.customservicelevel = "" + + def __repr__(self): + s = "" + return s.format( + repr(self.kpiname), + repr(self.customservicelevel) + ) + + def __init__(self): + self.name = "" + self.scopes = [] # item: GuaranteeScope + """:type : list[Agreement.GuaranteeTerm.GuaranteeScope]""" + self.servicelevelobjective = \ + Agreement.GuaranteeTerm.ServiceLevelObjective() + + def __repr__(self): + s = "" + return s.format( + repr(self.scopes), + repr(self.servicelevelobjective) + ) + + def __init__(self): + """Simple bean model for a ws-agreement agreement/template + """ + self.context = Agreement.Context() + self.agreement_id = "" + self.descriptionterms = {} + self.variables = {} # key: Property.name / value: Property + """:type : dict[str,Agreement.Property]""" + self.guaranteeterms = {} # key: GT.name / value: GT + """:type : dict[str,Agreement.GuaranteeTerm]""" + + def __repr__(self): + s = ("") + return s.format( + repr(self.agreement_id), + repr(self.context), + repr(self.descriptionterms), + repr(self.variables), + repr(self.guaranteeterms) + ) + + +class Template(Agreement): + #egarrido this code has been copied from xifi and has not beeing tested + def __init__(self): + super(Template, self).__init__() + self.template_id = "" + + def __repr__(self): + s = ("") + return s.format( + repr(self.template_id), + repr(self.context), + repr(self.descriptionterms), + repr(self.variables), + repr(self.guaranteeterms) + ) + + +class Enforcement(object): + def __init__(self): + """Simple bean model for an enforcement""" + self.agreement_id = "" + self.enabled = "" + + def __repr__(self): + return ("".format( + self.agreement_id, + self.enabled) + ) + +class AgreementStatus(object): + + class StatusEnum: + VIOLATED = "VIOLATED" + FULFILLED = "FULFILLED" + NON_DETERMINED = "NON_DETERMINED" + + class GuaranteeTermStatus(object): + def __init__(self): + self.name = "" + self.status = "" + + def __repr__(self): + s = "" + return s.format(self.name, self.status) + + def __init__(self): + self.agreement_id = "" + self.guaranteestatus = "" + self.guaranteeterms = [] + + def __repr__(self): + return ( + "").format( + self.agreement_id, + self.guaranteestatus, + repr(self.guaranteeterms)) + + @staticmethod + def json_decode(json_obj): + o = AgreementStatus() + o.agreement_id = json_obj["AgreementId"] + o.guaranteestatus = json_obj["guaranteestatus"] + + for term in json_obj["guaranteeterms"]: + t = AgreementStatus.GuaranteeTermStatus() + t.name = term["name"] + t.status = term["status"] + o.guaranteeterms.append(t) + return o + + +class Violation(object): + def __init__(self): + """Simple bean model for a violation""" + self.uuid = "" + self.contract_uuid = "" + self.service_scope = "" + self.metric_name = "" + self.datetime = datetime.now() + self.actual_value = 0 + + def __repr__(self): + return ("".format( + self.uuid, + self.contract_uuid, + self.service_scope, + self.metric_name, + self.datetime, + self.actual_value) + ) + + +class Provider(object): + def __init__(self): + """Simple bean model for a provider""" + self.uuid = "" + self.name = "" + + def __repr__(self): + return ("".format( + self.uuid, + self.name) + ) + def to_xml(self): + xml = "{}{}""".format( + self.uuid, + self.name + ) + return xml + + @staticmethod + def from_dict(d): + """Creates a Provider object from a dict structure (e.g. + a deserialized json string) + + Usage: + json_obj = json.loads(json_data) + out = wsag_model.Provider.from_dict(json_obj) + """ + result = Provider(d["uuid"], d["name"]) + return result