- Timestamp:
- May 15, 2012, 11:00:04 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/gformat.py
r10863 r10872 98 98 99 99 def get_yaml(item): 100 """ Get configuration yaml for 'item'""" 101 if datadump_cache.has_key(item): 102 return datadump_cache[item].copy() 103 104 gfile = os.path.join(NODE_DIR,item,'wleiden.yaml') 105 106 datadump = {} 107 f = open(gfile, 'r') 108 datadump.update(yaml.load(f,Loader=Loader)) 109 if datadump['nodetype'] == 'Hybrid': 110 # Some values are defined implicitly 111 if datadump.has_key('rdr_rules') and datadump['rdr_rules'] and not datadump.has_key('service_incoming_rdr'): 112 datadump['service_incoming_rdr'] = True 113 # Use some boring defaults 114 defaults = { 115 'service_proxy_normal' : False, 116 'service_proxy_ileiden' : False, 117 'service_accesspoint' : True, 118 'service_incoming_rdr' : False 119 } 120 for (key,value) in defaults.iteritems(): 121 if not datadump.has_key(key): 122 datadump[key] = value 123 f.close() 124 125 # Preformat certain needed variables for formatting and push those into special object 126 datadump['autogen_iface_keys'] = get_interface_keys(datadump) 127 128 wlan_count=0 129 for key in datadump['autogen_iface_keys']: 130 if datadump[key]['type'] in ['11a', '11b', '11g', 'wireless']: 131 datadump[key]['autogen_ifname'] = 'wlan%i' % wlan_count 132 wlan_count += 1 133 else: 134 datadump[key]['autogen_ifname'] = datadump[key]['interface'].split(':')[0] 135 136 dhcp_interfaces = [datadump[key]['autogen_ifname'] for key in datadump['autogen_iface_keys'] if (datadump[key].has_key('dhcp') and datadump[key]['dhcp'])] 137 datadump['autogen_dhcp_interfaces'] = dhcp_interfaces 138 datadump['autogen_item'] = item 139 140 datadump['autogen_realname'] = get_realname(datadump) 141 datadump['autogen_domain'] = datadump['domain'] if datadump.has_key('domain') else 'wleiden.net.' 142 datadump['autogen_fqdn'] = datadump['autogen_realname'] + '.' + datadump['autogen_domain'] 143 datadump_cache[item] = datadump.copy() 100 try: 101 """ Get configuration yaml for 'item'""" 102 if datadump_cache.has_key(item): 103 return datadump_cache[item].copy() 104 105 gfile = os.path.join(NODE_DIR,item,'wleiden.yaml') 106 107 datadump = {} 108 f = open(gfile, 'r') 109 datadump.update(yaml.load(f,Loader=Loader)) 110 if datadump['nodetype'] == 'Hybrid': 111 # Some values are defined implicitly 112 if datadump.has_key('rdr_rules') and datadump['rdr_rules'] and not datadump.has_key('service_incoming_rdr'): 113 datadump['service_incoming_rdr'] = True 114 # Use some boring defaults 115 defaults = { 116 'service_proxy_normal' : False, 117 'service_proxy_ileiden' : False, 118 'service_accesspoint' : True, 119 'service_incoming_rdr' : False 120 } 121 for (key,value) in defaults.iteritems(): 122 if not datadump.has_key(key): 123 datadump[key] = value 124 f.close() 125 126 # Preformat certain needed variables for formatting and push those into special object 127 datadump['autogen_iface_keys'] = get_interface_keys(datadump) 128 129 wlan_count=0 130 try: 131 for key in datadump['autogen_iface_keys']: 132 if datadump[key]['type'] in ['11a', '11b', '11g', 'wireless']: 133 datadump[key]['autogen_ifname'] = 'wlan%i' % wlan_count 134 wlan_count += 1 135 else: 136 datadump[key]['autogen_ifname'] = datadump[key]['interface'].split(':')[0] 137 except Exception as e: 138 print "# Error while processing interface %s" % key 139 raise 140 141 dhcp_interfaces = [datadump[key]['autogen_ifname'] for key in datadump['autogen_iface_keys'] if (datadump[key].has_key('dhcp') and datadump[key]['dhcp'])] 142 datadump['autogen_dhcp_interfaces'] = dhcp_interfaces 143 datadump['autogen_item'] = item 144 145 datadump['autogen_realname'] = get_realname(datadump) 146 datadump['autogen_domain'] = datadump['domain'] if datadump.has_key('domain') else 'wleiden.net.' 147 datadump['autogen_fqdn'] = datadump['autogen_realname'] + '.' + datadump['autogen_domain'] 148 datadump_cache[item] = datadump.copy() 149 except Exception as e: 150 print "# Error while processing %s" % item 151 raise 144 152 return datadump 145 153 … … 1263 1271 \tstatic [outputdir] = Generate all config files and store on disk 1264 1272 \t with format ./<outputdir>/%%NODE%%/%%FILE%% [./static] 1265 \ttest <node> <file> = Receive output of CGI script. 1273 \ttest <node> [<file>] = Receive output for certain node [all files]. 1274 \ttest-cgi <node> <file> = Receive output of CGI script [all files]. 1266 1275 \tlist <status> <items> = List systems which have certain status 1267 1276 … … 1335 1344 logger.info("All done goodbye") 1336 1345 elif sys.argv[1] == "test": 1346 # Basic argument validation 1347 try: 1348 node = sys.argv[2] 1349 datadump = get_yaml(node) 1350 except IndexError: 1351 print "Invalid argument" 1352 exit(1) 1353 except IOError as e: 1354 print e 1355 exit(1) 1356 1357 1358 # Get files to generate 1359 gen_files = sys.argv[3:] if len(sys.argv) > 3 else files 1360 1361 # Actual config generation 1362 for config in gen_files: 1363 logger.info("## Generating %s %s", node, config) 1364 print generate_config(node, config, datadump) 1365 elif sys.argv[1] == "test-cgi": 1337 1366 os.environ['PATH_INFO'] = "/".join(sys.argv[2:]) 1338 1367 os.environ['SCRIPT_NAME'] = __file__
Note:
See TracChangeset
for help on using the changeset viewer.