fix get_nodes_with_slivers()
[sfa.git] / sfa / rspecs / elements / versions / sfav1Node.py
index f93ff32..9933ece 100644 (file)
@@ -2,7 +2,6 @@ from sfa.util.sfalogging import logger
 from sfa.util.xml import XpathFilter
 from sfa.util.plxrn import PlXrn, xrn_to_hostname
 from sfa.util.xrn import Xrn
-
 from sfa.rspecs.elements.element import Element
 from sfa.rspecs.elements.node import Node
 from sfa.rspecs.elements.sliver import Sliver
@@ -54,7 +53,7 @@ class SFAv1Node:
             location_elems = Element.add_elements(node_elem, 'location',
                                                   node.get('location', []), Location.fields)
             interface_elems = Element.add_elements(node_elem, 'interface', 
-                                                   node.get('interfaces', []), Interface.fields)
+                                                   node.get('interfaces', []), ['component_id', 'client_id', 'ipv4'])
             
             #if 'bw_unallocated' in node and node['bw_unallocated']:
             #    bw_unallocated = etree.SubElement(node_elem, 'bw_unallocated', units='kbps').text = str(int(node['bw_unallocated'])/1000)
@@ -73,7 +72,7 @@ class SFAv1Node:
                 sliver = {}
             elif 'component_id' in sliver and sliver['component_id']:
                 filter['component_id'] = '*%s*' % sliver['component_id']
-            if not fliter:
+            if not filter:
                 continue 
             nodes = SFAv1Node.get_nodes(xml, filter)
             if not nodes:
@@ -113,7 +112,7 @@ class SFAv1Node:
 
     @staticmethod
     def get_nodes_with_slivers(xml):
-        xpath = '//node/sliver | //default:node/default:sliver
+        xpath = '//node[count(sliver)>0] | //default:node[count(default:sliver)>0]
         node_elems = xml.xpath(xpath)
         return SFAv1Node.get_node_objs(node_elems)