4 from sla.slaclient import wsag_model
\r
6 import dateutil.parser
\r
7 from sla.slaclient.templates.fed4fire.fed4fire import AgreementInput
\r
8 from sla.slaclient.templates.fed4fire.fed4fire import TemplateInput
\r
11 def templateinput_from_json(json_data):
\r
12 """Creates a TemplateInput from json data.
\r
14 :rtype: TemplateInput
\r
16 An example input is:
\r
18 "agreement_id" : "agreement-id"
\r
19 "agreement_name" : "agreement-name",
\r
20 "template_id" : "template-id",
\r
21 "provider" : "provider",
\r
22 "service_id" : "service-id",
\r
23 "expiration_time" : "2014-03-28T13:55:00Z",
\r
24 "service_properties" : [
\r
27 "servicename" : "service-a",
\r
28 "metric" : "xs:double",
\r
29 "location" : "//service-a/uptime"
\r
34 d = json.loads(json_data)
\r
35 if "expiration_time" in d:
\r
36 d["expiration_time"] = dateutil.parser.parse(d["expiration_time"])
\r
39 template_id=d.get("template_id", None),
\r
40 template_name=d.get("template_name", None),
\r
41 provider=d.get("provider", None),
\r
42 service_id=d.get("service_id"),
\r
43 expiration_time=d.get("expiration_time", None),
\r
44 service_properties=_json_parse_service_properties(d)
\r
49 def agreementinput_from_json(json_data):
\r
50 """Creates an AgreementInput from json data.
\r
52 :rtype: AgreementInput
\r
54 An example input is:
\r
56 "agreement_id" : "agreement-id"
\r
57 "agreement_name" : "agreement-name",
\r
58 "template_id" : "template-id",
\r
59 "consumer" : "consumer",
\r
60 "provider" : "provider",
\r
61 "service_id" : "service-id",
\r
62 "expiration_time" : "2014-03-28T13:55:00Z",
\r
66 "bounds" : [ "0", "1" ]
\r
71 d = json.loads(json_data)
\r
72 if "expiration_time" in d:
\r
73 d["expiration_time"] = dateutil.parser.parse(d["expiration_time"])
\r
76 agreement_id=d.get("agreement_id", None),
\r
77 agreement_name=d.get("agreement_name", None),
\r
78 template_id=d.get("template_id", None),
\r
79 consumer=d.get("consumer", None),
\r
80 provider=d.get("provider", None),
\r
81 service_id=d.get("service_id"),
\r
82 expiration_time=d.get("expiration_time", None),
\r
83 service_properties=_json_parse_service_properties(d),
\r
84 guarantee_terms=_json_parse_guarantee_terms(d)
\r
89 def _json_parse_service_properties(d):
\r
90 """Parse service properties in a json and translates to Property.
\r
91 :type d: dict(str, str)
\r
92 :rtype: list(wsag_model.Agreement.Property)
\r
95 for sp in d.get("service_properties", None) or ():
\r
97 wsag_model.Agreement.Property(
\r
98 servicename=sp.get("servicename", None),
\r
99 name=sp.get("name", None),
\r
100 metric=sp.get("metric", None),
\r
101 location=sp.get("location", None)
\r
107 def _json_parse_guarantee_terms(d):
\r
108 """Parse guarantee terms in a son and translates to GuaranteeTerm.
\r
109 :type d: dict(str, str)
\r
110 :rtype: list(wsag_model.AgreementInput.GuaranteeTerm)
\r
113 for term in d.get("guarantees", None) or ():
\r
115 AgreementInput.GuaranteeTerm(
\r
116 metric_name=term["name"],
\r
117 bounds=tuple(term["bounds"])
\r