smarter way to write configs, provide structure and map to avail. resources (testboxe...
[tests.git] / system / utils.py
1 # $Id$
2 import time
3 import os
4 from pprint import PrettyPrinter
5
6 # how could this accept a list again ?
7 def header(message):
8     now=time.strftime("%H:%M:%S", time.localtime())
9     print "*",now,'--',message
10
11 def pprint(message,spec,depth=2):
12     now=time.strftime("%H:%M:%S", time.localtime())
13     print ">",now,"--",message
14     PrettyPrinter(indent=8,depth=depth).pprint(spec)
15
16 def show_site_spec (site):
17     print '======== site',site['site_fields']['name']
18     for (k,v) in site.iteritems():
19         if k=='nodes':
20             if v: 
21                 print '\t\t','nodes : ',
22                 for node in v:  
23                     print node['node_fields']['hostname'],'',
24                 print ''
25         elif k=='users':
26             if v: 
27                 print '\t\tusers : ',
28                 for user in v:  
29                     print user['name'],'',
30                 print ''
31         elif k == 'site_fields':
32             print '\t\tlogin_base',':',v['login_base']
33         elif k == 'address_fields':
34             pass
35         else:
36             print '\t\t',k,
37             PrettyPrinter(indent=8,depth=2).pprint(v)
38         
39 def show_initscript_spec (initscript):
40     print '======== initscript',initscript['initscript_fields']['name']
41
42 def show_key_spec (key):
43     print '======== key',key['name']
44
45 def show_slice_spec (slice):
46     print '======== slice',slice['slice_fields']['name']
47     for (k,v) in slice.iteritems():
48         if k=='nodenames':
49             if v: 
50                 print '\t\tnodes : ',
51                 for nodename in v:  
52                     print nodename,'',
53                 print ''
54         elif k=='usernames':
55             if v: 
56                 print '\t\tusers : ',
57                 for username in v:  
58                     print username,'',
59                 print ''
60         elif k=='slice_fields':
61             print '\t\tfields',':',
62             print 'max_nodes=',v['max_nodes'],
63             print ''
64         else:
65             print '\t\t',k,v
66
67 def show_test_spec (message,all_plc_specs):
68     now=time.strftime("%H:%M:%S", time.localtime())
69     print ">",now,"--",message
70     for plc_spec in all_plc_specs:
71         show_test_spec_pass (plc_spec,1)
72         show_test_spec_pass (plc_spec,2)
73
74 def show_test_spec_pass (plc_spec,passno):
75     for (key,val) in plc_spec.iteritems():
76         if passno == 2:
77             if key == 'sites':
78                 for site in val:
79                     show_site_spec(site)
80             elif key=='initscripts':
81                 for initscript in val:
82                     show_initscript_spec (initscript)
83             elif key=='slices':
84                 for slice in val:
85                     show_slice_spec (slice)
86             elif key=='keys':
87                 for key in val:
88                     show_key_spec (key)
89         elif passno == 1:
90             if key not in ['sites','initscripts','slices','keys']:
91                 print '\t',key,':',val
92
93 def system(command):
94     now=time.strftime("%H:%M:%S", time.localtime())
95     print "+",now,':',command
96     return os.system("set -x; " + command)
97
98
99