The converters are designed to be pluggable: see ListConverter.
-Usage:
+Usage:
c = AnyConverter() or
c = ListConverter(AnyOtherConverter())
"""
-from xml.etree import ElementTree
-from xml.etree.ElementTree import Element
+try:
+ # Much faster and lighter library (C implementation)
+ from xml.etree import cElementTree as ElementTree
+except ImportError:
+ from xml.etree import ElementTree
+
import dateutil.parser
from wsag_model import Agreement
def convert(self, xmlroot):
result = []
- for item in xmlroot.find("items"): # loop through "items" children
+ # Converter for the old xml structure
+ # for item in xmlroot.find("items"): # loop through "items" children
+ # inner = self.innerconverter.convert(item)
+ # result.append(inner)
+ # return result
+
+ for item in xmlroot: # loop through children
inner = self.innerconverter.convert(item)
result.append(inner)
return result
result.enabled = xmlroot.find("enabled").text
return result
+
class ViolationConverter(Converter):
"""Converter for a violation.
Input:
<violation>
- <uuid>ce0e148f-dfac-4492-bb26-ad2e9a6965ec</uuid>
- <contract_uuid>agreement04</contract_uuid>
- <service_scope></service_scope>
- <metric_name>Performance</metric_name>
- <datetime>2014-01-14T11:28:22Z</datetime>
- <actual_value>0.09555700123360344</actual_value>
+ <uuid>1d94627e-c318-41ba-9c45-42c95b67cc32</uuid>
+ <contract_uuid>26e5d5b6-f5a1-4eb3-bc91-606e8f24fb09</contract_uuid>
+ <service_name>servicename1</service_name>
+ <service_scope>test1</service_scope>
+ <metric_name>UpTime</metric_name>
+ <datetime>2014-07-17T09:32:00+02:00</datetime>
+ <actual_value>0.0</actual_value>
</violation>
Output:
result = Violation()
result.uuid = xmlroot.find("uuid").text
result.contract_uuid = xmlroot.find("contract_uuid").text
+ result.service_name = xmlroot.find("service_name").text
result.service_scope = xmlroot.find("service_scope").text
result.metric_name = xmlroot.find("metric_name").text
result.actual_value = xmlroot.find("actual_value").text
dt_str = xmlroot.find("datetime").text
result.datetime = dateutil.parser.parse(dt_str)
+
return result
"""Converter for an ws-agreement agreement or template.
"""
super(AgreementConverter, self).__init__()
- self._namespaces = {
+ self._namespaces = {
"wsag": "http://www.ggf.org/namespaces/ws-agreement",
"sla": "http://sla.atos.eu",
- "xifi": "http://sla.xifi.eu"
}
self.agreement_tags = (
"{{{}}}Agreement".format(self._namespaces["wsag"]),
isns = (attrname[0] == '{')
#
- # Handle qnamed request:
+ # Handle qnamed request:
# attrname = {uri}name
#
if isns: