from TestSite import TestSite
from TestNode import TestNode
from macros import sequences
from TestSite import TestSite
from TestNode import TestNode
from macros import sequences
- print '*',self.norm_name(),"\r",3*"\t","========== BEG MACRO step"
+ beg_start=level*' '+'>>> '
+ end_start=level*' '+'<<< '
+ trailer=trail*'-'
+ # 4 is the len of '>>> '
+ width=tab-level-4-trail
+ format=("%%-%ds"%width)
+ beg_line=beg_start+format%self.display()+trail*'>'
+ end_line=end_start+format%self.display()+trail*'<'
+ print beg_line
- for special in ['force']:
- stepname = stepname.replace(special+'_',"")
+ for special in ['force','ignore']:
+ stepname = stepname.replace('_'+special,"")
help="fcdistro - as in vbuild-nightly")
parser.add_option("-e","--exclude",action="append", dest="exclude", default=[],
help="steps to exclude - can be set multiple times, or use quotes")
help="fcdistro - as in vbuild-nightly")
parser.add_option("-e","--exclude",action="append", dest="exclude", default=[],
help="steps to exclude - can be set multiple times, or use quotes")
+ parser.add_option("-i","--ignore",action="append", dest="ignore", default=[],
+ help="steps to run but ignore - can be set multiple times, or use quotes")
parser.add_option("-a","--all",action="store_true",dest="all_steps", default=False,
help="Run all default steps")
parser.add_option("-l","--list",action="store_true",dest="list_steps", default=False,
parser.add_option("-a","--all",action="store_true",dest="all_steps", default=False,
help="Run all default steps")
parser.add_option("-l","--list",action="store_true",dest="list_steps", default=False,
help="Specify the set of hostnames for the boxes that host the nodes")
parser.add_option("-N","--nodes",action="append", dest="ips_vnode", default=[],
help="Specify the set of hostname/IP's to use for vnodes")
help="Specify the set of hostnames for the boxes that host the nodes")
parser.add_option("-N","--nodes",action="append", dest="ips_vnode", default=[],
help="Specify the set of hostname/IP's to use for vnodes")
- parser.add_option ('-X', "--lxc",action='store_true',dest='plcs_use_lxc',
+ parser.add_option ('-X', "--lxc",action='store_true',dest='plcs_use_lxc',default=True,
+ help='use lxc-enabled plc boxes instead of vs-enabled ones')
+ parser.add_option ('-S', "--vs",action='store_false',dest='plcs_use_lxc',
help='use lxc-enabled plc boxes instead of vs-enabled ones')
parser.add_option("-s","--size",action="store",type="int",dest="size",default=1,
help="sets test size in # of plcs - default is 1")
help='use lxc-enabled plc boxes instead of vs-enabled ones')
parser.add_option("-s","--size",action="store",type="int",dest="size",default=1,
help="sets test size in # of plcs - default is 1")
help="Used by plc_db_dump and plc_db_restore")
parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False,
help="Run in verbose mode")
help="Used by plc_db_dump and plc_db_restore")
parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False,
help="Run in verbose mode")
- parser.add_option("-i","--interactive",action="store_true",dest="interactive",default=False,
+ parser.add_option("-I","--interactive",action="store_true",dest="interactive",default=False,
help="prompts before each step")
parser.add_option("-n","--dry-run", action="store_true", dest="dry_run", default=False,
help="Show environment and exits")
help="prompts before each step")
parser.add_option("-n","--dry-run", action="store_true", dest="dry_run", default=False,
help="Show environment and exits")
- parser.add_option("-r","--restart-nm", action="store_true", dest="forcenm", default=False,
- help="Force the NM to restart in ssh_slices step")
+# dropped when added Completer.py
+# parser.add_option("-r","--restart-nm", action="store_true", dest="forcenm", default=False,
+# help="Force the NM to restart in ssh_slices step")
parser.add_option("-t","--trace", action="store", dest="trace_file", default=None,
help="Trace file location")
(self.options, self.args) = parser.parse_args()
parser.add_option("-t","--trace", action="store", dest="trace_file", default=None,
help="Trace file location")
(self.options, self.args) = parser.parse_args()
- for optname in ['config','exclude','ips_bplc','ips_vplc','ips_bnode','ips_vnode']:
+ for optname in ['config','exclude','ignore','ips_bplc','ips_vplc','ips_bnode','ips_vnode']:
setattr(self.options,optname, flatten ( [ arg.split() for arg in getattr(self.options,optname) ] ))
if not self.options.rspec_styles:
setattr(self.options,optname, flatten ( [ arg.split() for arg in getattr(self.options,optname) ] ))
if not self.options.rspec_styles:
('personality','arg-personality',"linux64",None),
('pldistro','arg-pldistro',"onelab",None),
('fcdistro','arg-fcdistro','f14',None),
('personality','arg-personality',"linux64",None),
('pldistro','arg-pldistro',"onelab",None),
('fcdistro','arg-fcdistro','f14',None),
) :
# print 'handling',recname
path=filename
is_list = isinstance(default,list)
) :
# print 'handling',recname
path=filename
is_list = isinstance(default,list)
if not getattr(self.options,recname):
try:
parsed=file(path).readlines()
if not getattr(self.options,recname):
try:
parsed=file(path).readlines()
for value in getattr(self.options,recname):
fsave.write(value + "\n")
for value in getattr(self.options,recname):
fsave.write(value + "\n")
# rewrite '-' into '_' in step names
self.options.steps = [ step.replace('-','_') for step in self.options.steps ]
# rewrite '-' into '_' in step names
self.options.steps = [ step.replace('-','_') for step in self.options.steps ]
self.options.steps=selected
# this is useful when propagating on host boxes, to avoid conflicts
self.options.steps=selected
# this is useful when propagating on host boxes, to avoid conflicts
all_step_infos=[]
for step in self.options.steps:
if not TestPlc.valid_step(step):
continue
# some steps need to be done regardless of the previous ones: we force them
force=False
all_step_infos=[]
for step in self.options.steps:
if not TestPlc.valid_step(step):
continue
# some steps need to be done regardless of the previous ones: we force them
force=False
- if step.find("force_") == 0:
- step=step.replace("force_","")
+ if step.endswith("_force"):
+ step=step.replace("_force","")
utils.header("********** %d RUNNING step %s%s on plc %s"%(plc_counter,stepname,force_msg,plcname))
if not cross: step_result = method(plc_obj)
else: step_result = method(plc_obj,across_plcs)
utils.header("********** %d RUNNING step %s%s on plc %s"%(plc_counter,stepname,force_msg,plcname))
if not cross: step_result = method(plc_obj)
else: step_result = method(plc_obj,across_plcs)
+ if isinstance (step_result,Ignored):
+ step_result=step_result.result
+ if step_result:
+ msg="OK"
+ else:
+ msg="KO"
+ # do not overwrite if FAILURE
+ if overall_result=='SUCCESS':
+ overall_result='IGNORED'
+ utils.header('********** %d IGNORED (%s) step %s on %s'%(plc_counter,msg,stepname,plcname))
+ status="%s[I]"%msg
+ elif step_result:
spec['failed_step'] = stepname
utils.header('********** %d FAILED Step %s on %s (discarded from further steps)'\
%(plc_counter,stepname,plcname))
status="KO"
except:
spec['failed_step'] = stepname
utils.header('********** %d FAILED Step %s on %s (discarded from further steps)'\
%(plc_counter,stepname,plcname))
status="KO"
except:
spec['failed_step'] = stepname
traceback.print_exc()
utils.header ('********** %d FAILED (exception) Step %s on %s (discarded from further steps)'\
spec['failed_step'] = stepname
traceback.print_exc()
utils.header ('********** %d FAILED (exception) Step %s on %s (discarded from further steps)'\