X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sla%2Fslaclient%2Fxmlconverter.py;fp=sla%2Fslaclient%2Fxmlconverter.py;h=54b365effbbdb8405a4a7104ae43d4e717ace423;hb=f320a65ac7928a4a1c8315443880dce1d7afc997;hp=831df53ce3568f01315a8fa8152a943e5fa8334c;hpb=b6be4f9966a8ad3e05bd30155f723df55220128b;p=myslice.git diff --git a/sla/slaclient/xmlconverter.py b/sla/slaclient/xmlconverter.py index 831df53c..54b365ef 100755 --- a/sla/slaclient/xmlconverter.py +++ b/sla/slaclient/xmlconverter.py @@ -9,7 +9,7 @@ to a more-friendly POJO instances. The converters are designed to be pluggable: see ListConverter. -Usage: +Usage: c = AnyConverter() or c = ListConverter(AnyOtherConverter()) @@ -22,8 +22,12 @@ c.convert(root.getroot()) """ -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 @@ -81,7 +85,13 @@ class ListConverter(Converter): 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 @@ -132,17 +142,19 @@ class EnforcementConverter(Converter): result.enabled = xmlroot.find("enabled").text return result + class ViolationConverter(Converter): """Converter for a violation. Input: - ce0e148f-dfac-4492-bb26-ad2e9a6965ec - agreement04 - - Performance - 2014-01-14T11:28:22Z - 0.09555700123360344 + 1d94627e-c318-41ba-9c45-42c95b67cc32 + 26e5d5b6-f5a1-4eb3-bc91-606e8f24fb09 + servicename1 + test1 + UpTime + 2014-07-17T09:32:00+02:00 + 0.0 Output: @@ -155,11 +167,13 @@ class ViolationConverter(Converter): 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 @@ -168,10 +182,9 @@ class AgreementConverter(Converter): """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"]), @@ -341,7 +354,7 @@ def _get_attribute(element, attrname): isns = (attrname[0] == '{') # - # Handle qnamed request: + # Handle qnamed request: # attrname = {uri}name # if isns: