Merge branch 'master' into senslab2
[sfa.git] / sfa / util / topology.py
1 ##
2 # SFA Topology Info
3 #
4 # This module holds topology configuration for SFA. It is implemnted as a 
5 # list of site_id tuples
6
7 import os.path
8 import traceback
9 from sfa.util.sfalogging import logger
10
11 class Topology(set):
12     """
13     Parse the topology configuration file. 
14     """
15
16     def __init__(self, config_file = "/etc/sfa/topology"):
17         set.__init__(self) 
18         self.config_file = None
19         self.config_path = None
20         self.load(config_file)
21
22     def load(self, config_file):
23         try:
24             
25             self.config_file = config_file
26             # path to configuration data
27             self.config_path = os.path.dirname(config_file)
28             # load the links
29             f = open(config_file, 'r')
30             for line in f:
31                 ignore = line.find('#')
32                 if ignore > -1:
33                     line = line[0:ignore]
34                 tup = line.split()
35                 if len(tup) > 1:
36                     self.add((tup[0], tup[1]))    
37         except Exception, e:
38             logger.log_exc("Could not find or load the configuration file: %s" % config_file)
39             raise