Added --dev option for developers to runsics.py
Also eliminated problems with inheriting environment when running on test and instrument hosts.
This commit is contained in:
@ -42,28 +42,29 @@ def start_cmd(server, args):
|
|||||||
if status_cmd(server, args):
|
if status_cmd(server, args):
|
||||||
print '%s is already running. Cowardly refusing to launch it twice' % server
|
print '%s is already running. Cowardly refusing to launch it twice' % server
|
||||||
return
|
return
|
||||||
|
if (args.sockoffset != 'none'):
|
||||||
|
soffset = ':' + str(inst_test_sockoffset[args.sockoffset])
|
||||||
|
else:
|
||||||
|
soffset = ''
|
||||||
sicsenv = {
|
sicsenv = {
|
||||||
'none': None,
|
'none': None,
|
||||||
'fullsim': {'SICS_SIMULATION': 'full'},
|
'fullsim': 'SICS_SIMULATION=full%s' % soffset,
|
||||||
'fakedev': {'SICS_SIMULATION': 'fakedev'},
|
'fakedev': 'SICS_SIMULATION=fakedev%s' % soffset,
|
||||||
'scriptval': {'SICS_SIMULATION': 'script_validator'}
|
'scriptval': 'SICS_SIMULATION=script_validator%s' % soffset
|
||||||
}
|
}
|
||||||
execenv = os.environ
|
|
||||||
if (args.sockoffset != 'none'):
|
|
||||||
execenv['SOCKOFFSET'] = str(inst_test_sockoffset[args.sockoffset])
|
|
||||||
# Set SICS_SIMULATION environment variable
|
# Set SICS_SIMULATION environment variable
|
||||||
if (server == 'scriptval'):
|
if (server == 'scriptval'):
|
||||||
execenv.update(sicsenv['scriptval'])
|
SIMENV = sicsenv['scriptval']
|
||||||
else:
|
else:
|
||||||
execenv.update(sicsenv[args.test])
|
SIMENV = sicsenv[args.test]
|
||||||
start_str = 'sudo -u %s %s/SICServer -d %s' % (args.user, args.dir, args.config)
|
start_str = 'sudo -u %s %s %s/SICServer -d %s' % (args.user, SIMENV, args.dir, args.config)
|
||||||
# print "DEBUG: start_str:%s" % (start_str)
|
# print "DEBUG: start_str:%s" % (start_str)
|
||||||
# Suppress output if launching the script validator
|
# Suppress output if launching the script validator
|
||||||
if (server == 'scriptval'):
|
if (server == 'scriptval'):
|
||||||
with open(os.devnull) as fp:
|
with open(os.devnull) as fp:
|
||||||
subprocess.call(shlex.split(start_str), preexec_fn=sics_preexec, env=execenv, cwd=args.dir, stderr=fp, stdout=fp)
|
subprocess.call(shlex.split(start_str), preexec_fn=sics_preexec, cwd=args.dir, stderr=fp, stdout=fp)
|
||||||
else:
|
else:
|
||||||
subprocess.call(shlex.split(start_str), preexec_fn=sics_preexec, env=execenv, cwd=args.dir)
|
subprocess.call(shlex.split(start_str), preexec_fn=sics_preexec, cwd=args.dir)
|
||||||
status_cmd(server, args)
|
status_cmd(server, args)
|
||||||
|
|
||||||
def stop_cmd(server, args):
|
def stop_cmd(server, args):
|
||||||
@ -121,16 +122,13 @@ def status_cmd(server, args):
|
|||||||
def main(**kwargs):
|
def main(**kwargs):
|
||||||
runsics_cmd = {'start': start_cmd, 'stop': stop_cmd, 'status': status_cmd}
|
runsics_cmd = {'start': start_cmd, 'stop': stop_cmd, 'status': status_cmd}
|
||||||
# Setup defaults. Use nice defaults in test environments.
|
# Setup defaults. Use nice defaults in test environments.
|
||||||
|
deflt_dir = '/usr/local/sics/server'
|
||||||
|
deflt_sockoffset = 'none'
|
||||||
|
deflt_user = inst_user
|
||||||
if os.environ.has_key('TEST_SICS'):
|
if os.environ.has_key('TEST_SICS'):
|
||||||
deflt_user = getpass.getuser()
|
|
||||||
deflt_test = os.environ['TEST_SICS']
|
deflt_test = os.environ['TEST_SICS']
|
||||||
deflt_dir = './'
|
|
||||||
deflt_sockoffset = inst_name
|
|
||||||
else:
|
else:
|
||||||
deflt_user = inst_user
|
|
||||||
deflt_test = 'none'
|
deflt_test = 'none'
|
||||||
deflt_dir = '/usr/local/sics/server'
|
|
||||||
deflt_sockoffset = 'none'
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
parser = argparse.ArgumentParser( description='SICS Server startup script.' )
|
parser = argparse.ArgumentParser( description='SICS Server startup script.' )
|
||||||
cmd_grp = parser.add_argument_group('Commands', 'Runsics commands')
|
cmd_grp = parser.add_argument_group('Commands', 'Runsics commands')
|
||||||
@ -146,16 +144,21 @@ def main(**kwargs):
|
|||||||
exc_grp = parser.add_mutually_exclusive_group()
|
exc_grp = parser.add_mutually_exclusive_group()
|
||||||
exc_grp.add_argument('--sicsonly', help='Just run SICS without the script validator', action='store_true', default=False)
|
exc_grp.add_argument('--sicsonly', help='Just run SICS without the script validator', action='store_true', default=False)
|
||||||
exc_grp.add_argument('--scriptval', help='Launch script validator as well as SICServer. Use this to override the default action when the TEST_SICS environmant variable is set.', action='store_true', default=False)
|
exc_grp.add_argument('--scriptval', help='Launch script validator as well as SICServer. Use this to override the default action when the TEST_SICS environmant variable is set.', action='store_true', default=False)
|
||||||
|
exc_grp.add_argument('--dev', help='Launch SICS only in current directory listening on socket %s and with simulation = fullsim' % (server_port['sics']['server'] + inst_test_sockoffset[inst_name]), action='store_true')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
# Don't launch script validator in development environments.
|
# Don't launch script validator in development environments.
|
||||||
if args.scriptval:
|
if args.scriptval:
|
||||||
deflt_sicsonly = False
|
args.sicsonly = False
|
||||||
elif os.environ.has_key('TEST_SICS'):
|
elif args.dev:
|
||||||
deflt_sicsonly = True
|
args.sicsonly = True
|
||||||
else:
|
args.sockoffset = inst_name
|
||||||
deflt_sicsonly = args.sicsonly
|
if (args.test == 'none'):
|
||||||
|
args.test = 'fullsim'
|
||||||
|
if (args.dir == deflt_dir):
|
||||||
|
args.dir = './'
|
||||||
|
args.user = getpass.getuser()
|
||||||
# Launch SICS
|
# Launch SICS
|
||||||
if (deflt_sicsonly):
|
if (args.sicsonly):
|
||||||
runsics_cmd[args.cmd]('sics', args)
|
runsics_cmd[args.cmd]('sics', args)
|
||||||
else:
|
else:
|
||||||
runsics_cmd[args.cmd]('sics', args)
|
runsics_cmd[args.cmd]('sics', args)
|
||||||
|
@ -45,12 +45,6 @@ proc syncbackup {file} {
|
|||||||
backup motorSave
|
backup motorSave
|
||||||
}
|
}
|
||||||
publish syncbackup Spy
|
publish syncbackup Spy
|
||||||
if [info exists env(SOCKOFFSET)] {
|
|
||||||
set telnetport [expr {$telnetport + $env(SOCKOFFSET)}]
|
|
||||||
set interruptport [expr {$interruptport + $env(SOCKOFFSET)}]
|
|
||||||
set serverport [expr {$serverport + $env(SOCKOFFSET)}]
|
|
||||||
set quieckport [expr {$quieckport + $env(SOCKOFFSET)}]
|
|
||||||
}
|
|
||||||
if {[info exists env(SICS_SIMULATION)] != 1} {
|
if {[info exists env(SICS_SIMULATION)] != 1} {
|
||||||
set sicsroot ../
|
set sicsroot ../
|
||||||
sics_simulation false
|
sics_simulation false
|
||||||
@ -72,7 +66,18 @@ if {[info exists env(SICS_SIMULATION)] != 1} {
|
|||||||
clientput ERROR: hostport_config_test.tcl is missing
|
clientput ERROR: hostport_config_test.tcl is missing
|
||||||
sics_exitus
|
sics_exitus
|
||||||
}
|
}
|
||||||
switch $env(SICS_SIMULATION) {
|
set SIMENV [split $env(SICS_SIMULATION) ":" ]
|
||||||
|
if {[llength $SIMENV] == 2} {
|
||||||
|
set SICSIM [lindex $SIMENV 0]
|
||||||
|
set SOCKOFFSET [lindex $SIMENV 1]
|
||||||
|
set telnetport [expr {$telnetport + $SOCKOFFSET}]
|
||||||
|
set interruptport [expr {$interruptport + $SOCKOFFSET}]
|
||||||
|
set serverport [expr {$serverport + $SOCKOFFSET}]
|
||||||
|
set quieckport [expr {$quieckport + $SOCKOFFSET}]
|
||||||
|
} else {
|
||||||
|
set SICSIM $SIMENV
|
||||||
|
}
|
||||||
|
switch $SICSIM {
|
||||||
"full" {
|
"full" {
|
||||||
set sicsroot ../
|
set sicsroot ../
|
||||||
sics_simulation true
|
sics_simulation true
|
||||||
@ -93,13 +98,13 @@ if {[info exists env(SICS_SIMULATION)] != 1} {
|
|||||||
MakeSync localhost $serverport spy 007 ../log/syncfile.tcl
|
MakeSync localhost $serverport spy 007 ../log/syncfile.tcl
|
||||||
}
|
}
|
||||||
default {
|
default {
|
||||||
error "ERROR: SICS_SIMULATION must be full, script_validator, or fakedev, not $env(SICS_SIMULATION)"
|
error "ERROR: SICS_SIMULATION must be full, script_validator, or fakedev, not $SICSIM"
|
||||||
sics_exitus
|
sics_exitus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set obj_simulation flags for each SICS_SIMULATION mode
|
# Set obj_simulation flags for each SICS_SIMULATION mode
|
||||||
switch $env(SICS_SIMULATION) {
|
switch $SICSIM {
|
||||||
"full" - "simdriv" - "script_validator" {
|
"full" - "simdriv" - "script_validator" {
|
||||||
dict for {simflag d} $SIMFLAG_VAL {
|
dict for {simflag d} $SIMFLAG_VAL {
|
||||||
$simflag true
|
$simflag true
|
||||||
|
Reference in New Issue
Block a user