+
+
+def system(command,background=False):
+ if background: command += " &"
+ if options.dry_run:
+ print 'dry_run:',command
+ return 0
+ else:
+ return os.system("set -x; " + command)
+
+### WARNING : this ALWAYS does its job, even in dry_run mode
+def output_of (command):
+ import commands
+# if options.dry_run:
+# print 'dry_run',command
+# return (0,'[[dry-run - fake output]]')
+# else:
+ (code,string) = commands.getstatusoutput(command)
+ return (code,string)
+
+
+
+# convenience: translating shell-like pattern into regexp
+def match (string, pattern):
+ # tmp - there's probably much simpler
+ # rewrite * into .*, ? into .
+ pattern=pattern.replace("*",".*")
+ pattern=pattern.replace("?",".")
+ return re.compile(pattern).match(string)
+
+def locate_sanity_scripts (message,path,extensions):
+ print message,'searching',path,'for extensions',extensions
+ scripts=[]
+ for ext in extensions:
+ scripts += glob.glob (path+'/*.'+ext)
+ return scripts
+
+# quick & dirty - should probably use the parseroption object instead
+# and move to TestMain as well
+exclude_options_keys = [ 'ensure_value' , 'read_file', 'read_module' ]
+def show_options (message,options):
+ now=time.strftime("%H:%M:%S", time.localtime())
+ print ">",now,"--",message
+ for k in dir(options):
+ if k.find("_")==0: continue
+ if k in exclude_options_keys: continue
+ print " ",k,":",getattr(options,k)
+
+
+
+#################### display config
+# entry point
+def show_plc_spec (plc_spec):
+ show_plc_spec_pass (plc_spec,1)
+ show_plc_spec_pass (plc_spec,2)
+
+def show_plc_spec_pass (plc_spec,passno):
+ for (key,val) in plc_spec.iteritems():
+ if passno == 2:
+ if key == 'sites':
+ for site in val:
+ show_site_spec(site)
+ for node in site['nodes']:
+ show_node_spec(node)
+ elif key=='initscripts':
+ for initscript in val:
+ show_initscript_spec (initscript)
+ elif key=='slices':
+ for slice in val:
+ show_slice_spec (slice)
+ elif key=='keys':
+ for key in val:
+ show_key_spec (key)
+ elif passno == 1:
+ if key not in ['sites','initscripts','slices','keys']:
+ print '* ',key,':',val
+