Merge branch 'onelab' of https://github.com/onelab-eu/myslice into onelab
[unfold.git] / sla / slaclient / xmlconverter.py
index 54b365e..35dc58c 100755 (executable)
@@ -21,6 +21,7 @@ root = ElementTree.parse("file.xml")
 c.convert(root.getroot())
 
 """
+from myslice.settings import logger
 
 try:
     # Much faster and lighter library (C implementation)
@@ -28,6 +29,8 @@ try:
 except ImportError:
     from xml.etree import ElementTree
 
+from xml.etree.ElementTree import QName
+
 import dateutil.parser
 
 from wsag_model import Agreement
@@ -198,12 +201,17 @@ class AgreementConverter(Converter):
         :param Element xmlroot: root element of xml to convert.
         :rtype: wsag_model.Agreement
         """
+        # for name, value in xmlroot.attrib.items():
+        #      logger.debug('SLA xmlconverter: {} = {}'.format(name, value))
+
         if xmlroot.tag in self.agreement_tags:
             result = Agreement()
-            result.agreement_id = xmlroot.attrib["AgreementId"]
+            agreementId = str(QName(self._namespaces["wsag"], "AgreementId"))
+            result.agreement_id = xmlroot.attrib[agreementId]
         elif xmlroot.tag in self.template_tags:
             result = Template()
-            result.template_id = xmlroot.attrib["TemplateId"]
+            templateId = str(QName(self._namespaces["wsag"], "TemplateId"))
+            result.template_id = xmlroot.attrib[templateId]
         else:
             raise ValueError("Not valid root element name: " + xmlroot.tag)
 
@@ -273,7 +281,7 @@ class AgreementConverter(Converter):
         nss = self._namespaces
         for element in elements:
             servicename = _get_attribute(element, "ServiceName")
-            for var in element.findall("wsag:Variables/wsag:Variable", nss):
+            for var in element.findall("wsag:VariableSet/wsag:Variable", nss):
                 key, value = self._parse_property(var, servicename)
                 result[key] = value
 
@@ -311,7 +319,6 @@ class AgreementConverter(Converter):
         return name, result
 
     def _parse_guarantees(self, elements):
-
         result = {}
         for element in elements:
             key, value = self._parse_guarantee(element)