remove timezone info from credential expiration before validating
[sfa.git] / sfa / rspecs / sfa_rspec.py
index 85d5fcc..7f0cd36 100755 (executable)
@@ -53,14 +53,18 @@ class SfaRSpec(RSpec):
             nodes = self.xml.xpath('//node/hostname/text()')
         else:
             nodes = self.xml.xpath('//network[@name="%s"]//node/hostname/text()' % network)
+
+        nodes = [node.strip() for node in nodes]
         return nodes
 
     def get_nodes_with_slivers(self, network = None):
         if network:
-            return self.xml.xpath('//network[@name="%s"]//node[sliver]/hostname/text()' % network)   
+            nodes =  self.xml.xpath('//network[@name="%s"]//node[sliver]/hostname/text()' % network)   
         else:
-            return self.xml.xpath('//node[sliver]/hostname/text()')
+            nodes = self.xml.xpath('//node[sliver]/hostname/text()')
 
+        nodes = [node.strip() for node in nodes]
+        return nodes     
     def get_nodes_without_slivers(self, network=None): 
         xpath_nodes_without_slivers = '//node[not(sliver)]/hostname/text()'
         xpath_nodes_without_slivers_in_network = '//network[@name="%s"]//node[not(sliver)]/hostname/text()' 
@@ -91,6 +95,10 @@ class SfaRSpec(RSpec):
         sliver = node.find("sliver")
         return self.attributes_list(sliver)
 
+    def get_slice_attributes(self, network=None):
+        # TODO: FINISH
+        return []
+
     def get_site_nodes(self, siteid, network=None):
         if network:
             nodes = self.xml.xpath('//network[@name="%s"]/site[@id="%s"]/node/hostname/text()' % \
@@ -235,23 +243,25 @@ class SfaRSpec(RSpec):
                     etree.SubElement(sliver_elem, tag['tagname'], value=tag['value'])
 
     def remove_slivers(self, slivers, network=None, no_dupes=False):
-        if not isinstance(slivers, list):
-            slivers = [slivers]
+        slivers = self._process_slivers(slivers)
         for sliver in slivers:
             node_elem = self.get_node_element(sliver['hostname'], network)
-            sliver_elem = node.find('sliver')
+            sliver_elem = node_elem.find('sliver')
             if sliver_elem != None:
-                node_elem.remove(sliver)                 
+                node_elem.remove(sliver_elem)
     
     def add_default_sliver_attribute(self, name, value, network=None):
         if network:
             defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network)
         else:
             defaults = self.xml.xpath("//sliver_defaults" % network)
-        if defaults is None:
-            defaults = etree.Element("sliver_defaults")
-            network = self.xml.xpath("//network[@name='%s']" % network)
-            network.insert(0, defaults)
+        if not defaults :
+            network_tag = self.xml.xpath("//network[@name='%s']" % network)
+            if isinstance(network_tag, list):
+                network_tag = network_tag[0]
+            defaults = self.add_element('sliver_defaults', attrs={}, parent=network_tag)
+        elif isinstance(defaults, list):
+            defaults = defaults[0]
         self.add_attribute(defaults, name, value)
 
     def add_sliver_attribute(self, hostname, name, value, network=None):