cosmetic + one tab required spaces instead
[sfa.git] / sfa / rspecs / pg_rspec_converter.py
index 5db0dc3..ef021c0 100755 (executable)
@@ -1,10 +1,13 @@
 #!/usr/bin/python 
+from __future__ import print_function
+
 from lxml import etree
-from StringIO import StringIO
 from sfa.util.xrn import Xrn, urn_to_hrn
 from sfa.rspecs.rspec import RSpec
 from sfa.rspecs.version_manager import VersionManager
 
+from sfa.util.py23 import StringIO
+
 xslt='''<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="no"/>
 
@@ -68,12 +71,18 @@ class PGRSpecConverter:
                     node_element.set(attrib, attribs[attrib])
             urn = pg_node["component_id"]
             if urn:
-                urn = urn[0]
+                if type(urn)==list:
+                    # legacy code, not sure if urn is ever a list...
+                    urn = urn[0]
                 hostname = Xrn.urn_split(urn)[-1]
                 hostname_element = node_element.add_element('hostname')
                 hostname_element.set_text(hostname)
                 if hostname in nodes_with_slivers:
-                    node_element.add_element('sliver')  
+                    node_element.add_element('sliver')
+
+            for hardware_type in pg_node["hardware_types"]:
+                if "name" in hardware_type:
+                    node_element.add_element("hardware_type", name=hardware_type["name"])
                      
             # just copy over remaining child elements  
             #for child in pg_node_element.getchildren():
@@ -85,4 +94,4 @@ class PGRSpecConverter:
 if __name__ == '__main__':
     import sys
     if len(sys.argv) > 1:        
-        print PGRSpecConverter.to_sfa_rspec(sys.argv[1])  
+        print(PGRSpecConverter.to_sfa_rspec(sys.argv[1]))