X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2Futils.py;h=d6938bf390dc826c4e666a2c7bf744d966257ea3;hb=8562147f6fff5456f230b560cc7504850df24d1a;hp=2859642f163e9a7461dda9f2530586b9fcaf1fce;hpb=628f6e0d10fc59845867833e8a75ff29fbe4e84a;p=tests.git diff --git a/system/utils.py b/system/utils.py index 2859642..d6938bf 100644 --- a/system/utils.py +++ b/system/utils.py @@ -1,4 +1,6 @@ -# $Id$ +# Thierry Parmentelat +# Copyright (C) 2010 INRIA +# import time, os, re, glob, sys from pprint import PrettyPrinter @@ -20,16 +22,24 @@ def pprint(message,spec,depth=2): -def system(command,background=False): - if background: command += " &" +def system(command,background=False,silent=False): if options.dry_run: print 'dry_run:',command return 0 + + if silent : + if command.find(';')>=0: command = "(%s) 2> /dev/null" % command + else: command += " 2> /dev/null" + if background: command += " &" + if silent: + print '.', + sys.stdout.flush() else: now=time.strftime("%H:%M:%S", time.localtime()) - print "*",now,'--', + # don't show in summary + print "->",now,'--', sys.stdout.flush() - return os.system("set -x; " + command) + return os.system("set -x; " + command) ### WARNING : this ALWAYS does its job, even in dry_run mode def output_of (command): @@ -51,11 +61,12 @@ def match (string, pattern): pattern=pattern.replace("?",".") return re.compile(pattern).match(string) -def locate_sanity_scripts (message,path,extensions): +def locate_hooks_scripts (message,path,extensions): print message,'searching',path,'for extensions',extensions scripts=[] for ext in extensions: - scripts += glob.glob (path+'/*.'+ext) + # skip helper programs + scripts += glob.glob (path+'/[a-zA-Z]*.'+ext) return scripts # quick & dirty - should probably use the parseroption object instead @@ -71,87 +82,3 @@ def show_options (message,options): -#################### 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 - -def show_site_spec (site): - print '* ======== site',site['site_fields']['name'] - for (k,v) in site.iteritems(): - if k=='nodes': - if v: - print '* ','nodes : ', - for node in v: - print node['node_fields']['hostname'],'', - print '' - elif k=='users': - if v: - print '* users : ', - for user in v: - print user['name'],'', - print '' - elif k == 'site_fields': - print '* login_base',':',v['login_base'] - elif k == 'address_fields': - pass - else: - print '* ',k, - PrettyPrinter(indent=8,depth=2).pprint(v) - -def show_initscript_spec (initscript): - print '* ======== initscript',initscript['initscript_fields']['name'] - -def show_key_spec (key): - print '* ======== key',key['name'] - -def show_slice_spec (slice): - print '* ======== slice',slice['slice_fields']['name'] - for (k,v) in slice.iteritems(): - if k=='nodenames': - if v: - print '* nodes : ', - for nodename in v: - print nodename,'', - print '' - elif k=='usernames': - if v: - print '* users : ', - for username in v: - print username,'', - print '' - elif k=='slice_fields': - print '* fields',':', - print 'max_nodes=',v['max_nodes'], - print '' - else: - print '* ',k,v - -def show_node_spec (node): - print "* node",node['name'],"host_box=",node['host_box'], - print "hostname=",node['node_fields']['hostname'], - print "ip=",node['interface_fields']['ip'] - -