from optparse import OptionParser
from sfa.util.faults import *
-from sfa.util.sfalogging import sfa_logger
+from sfa.util.sfalogging import logger
def merge_rspecs(rspecs):
"""
try:
known_networks[network.get('name')]=True
except:
- sfa_logger().error("merge_rspecs: cannot register network with no name in rspec")
+ logger.error("merge_rspecs: cannot register network with no name in rspec")
pass
def is_registered_network (network):
try:
return network.get('name') in known_networks
except:
- sfa_logger().error("merge_rspecs: cannot retrieve network with no name in rspec")
+ logger.error("merge_rspecs: cannot retrieve network with no name in rspec")
return False
# the resulting tree
rspec = None
for input_rspec in rspecs:
+ # ignore empty strings as returned with used call_ids
+ if not input_rspec: continue
try:
tree = etree.parse(StringIO(input_rspec))
except etree.XMLSyntaxError:
# consider failing silently here
- sfa_logger().log_exc("merge_rspecs, parse error")
+ logger.log_exc("merge_rspecs, parse error")
message = str(sys.exc_info()[1]) + ' with ' + input_rspec
raise InvalidRSpec(message)
root = tree.getroot()
if not root.get("type") in ["SFA"]:
- sfa_logger().error("merge_rspecs: unexpected type for rspec root, %s"%root.get('type'))
+ logger.error("merge_rspecs: unexpected type for rspec root, %s"%root.get('type'))
continue
if rspec == None:
# we scan the first input, register all networks
if len(networks) == 1:
self.network = networks[0]
+ # Thierry : need this to locate hostname even if several networks
def get_node_element(self, hostname, network=None):
- if network == None:
+ if network == None and self.network:
network = self.network
- names = self.rspec.iterfind("./network[@name='%s']/site/node/hostname" % network)
+ if network != None:
+ names = self.rspec.iterfind("./network[@name='%s']/site/node/hostname" % network)
+ else:
+ names = self.rspec.iterfind("./network/site/node/hostname")
for name in names:
if name.text == hostname:
return name.getparent()
return None
- # Thierry : I need this to return all nodes in all networks
+ # Thierry : need this to return all nodes in all networks
def get_node_list(self, network=None):
if network == None and self.network:
network = self.network