in src/main/admin/ducc.py [0:0]
def run_component(self, component, or_parms, numagents, rmoverride, background, nodup, localdate, testcp):
if ( component == 'all' ):
component = 'rm,sm,pm,ws,orchestrator'
if ( component == 'head' ):
component = 'rm,sm,pm,ws,orchestrator'
complist = component.split(',')
args = None
# ducc-head needs to be in system properties before the ducc daemon reads ducc.properties
# to insure it can be substituted properly
ducc_home = self.DUCC_HOME
CLASSPATH = os.environ['CLASSPATH'] # Unused ??
if ( testcp != None ):
if testcp in os.environ:
xcp = os.environ[testcp]
self.prepend_classpath(xcp)
print "Classpath augmented with:", xcp
else:
print "WARNING -- No value assigned to environment variable '" + testcp + "'"
jvm_opts = []
jvm_opts.append('-Dos.page.size=' + self.os_pagesize)
jvm_opts.append('-Dducc.deploy.configuration=' + ducc_home + '/resources/ducc.properties')
jvm_opts.append('-Dducc.head=' + self.ducc_head)
jvm_opts.append('-Dlog4j.configuration=file://' + ducc_home + '/resources/log4j.xml')
service = 'org.apache.uima.ducc.common.main.DuccService'
for c in complist:
if ( c == 'agent' ):
if ( len(complist) > 1 ):
print "Must start agents separately"
sys.exit(1)
if ( not self.verify_jvm() ):
return
if ( not self.check_clock_skew(localdate) ):
return
if ( not self.verify_limits() ):
return
(viable, elevated, safe) = self.verify_duccling()
if ( not self.duccling_ok(viable, elevated, safe) ):
print 'NOT_OK Cannot proceed because of ducc_ling problems.'
return
if(self.is_head_node()):
pass
else:
if ( not verify_slave_node(localdate, self.ducc_properties) ):
# we assume that verify_local_node is spewing a line of the form
# NOTOK error message
# if all is not fine
print '0 ONE RETURNS'
return
jvm_opts.append('-Djava.library.path=' + ducc_home)
if ( self.agent_jvm_args != None ):
jvm_opts.append(self.agent_jvm_args)
if ( (numagents > 1) ):
print '-------------------- launching special agent --------------------'
service = 'org.apache.uima.ducc.agent.launcher.Launcher'
args = ' ' + str(numagents)
jvm_opts.append('-DIP=192.168.3.85')
else:
ducc_component = '-Dducc.deploy.components=agent'
if ( c == 'rm' ):
if ( int(rmoverride) > 0 ):
jvm_opts.append("-Dducc.rm.override.dram=" + rmoverride)
if ( self.rm_jvm_args != None ):
jvm_opts.append(self.rm_jvm_args)
if ( c == 'ws' ):
here = os.getcwd()
os.chdir(ducc_home + '/webserver')
if ( self.ws_jvm_args != None ):
jvm_opts.append(self.ws_jvm_args)
self.add_to_classpath(ducc_home + '/webserver/lib/*')
self.add_to_classpath(ducc_home + '/webserver/lib/apache-jsp/*')
self.add_to_classpath(ducc_home + '/webserver/lib/apache-jstl/*')
self.add_to_classpath(ducc_home + '/webserver/lib/websocket/*')
if ( c == 'orchestrator' ):
if ( or_parms != None ):
args = '-' + or_parms
if ( self.or_jvm_args != None ):
jvm_opts.append(self.or_jvm_args)
self.add_to_classpath(ducc_home + '/webserver/lib/*')
self.add_to_classpath(ducc_home + '/lib/uima-ducc/user/*')
if ( c == 'pm' ):
if ( self.pm_jvm_args != None ):
jvm_opts.append(self.pm_jvm_args)
if ( c == 'sm' ):
if ( self.sm_jvm_args != None ):
jvm_opts.append(self.sm_jvm_args)
self.add_to_classpath(ducc_home + '/webserver/lib/*')
self.add_to_classpath(ducc_home + '/lib/uima-ducc/user/*')
if (component != 'agent'):
service = 'org.apache.uima.ducc.common.main.DuccService'
ducc_component = '-Dducc.deploy.components=' + component
# check to see if there is a process like this running already, and barf if so
# usually called with --nodup, but the sim needs multiple agents yes on the node
pid = None
if ( nodup ):
response = self.find_ducc_process(self.localhost)
if ( response[0] ): # something is returned
proclist = response[1]
for proc in proclist:
r_component = proc[0]
r_pid = proc[1]
r_found_user = proc[2]
if ( r_found_user != os.environ['LOGNAME'] ): # don't care about other stuff
continue
if ( r_component == component ):
print "WARN Not starting", component + ': already running in PID', r_found_user, r_pid, 'on node', self.localhost
return
# not already running, and the node is viable. fire it off.
if ( not self.verify_limits() ):
return
cmd = []
cmd.append(self.java())
cmd.append(ducc_component)
cmd = cmd + jvm_opts
cmd.append(service)
if ( args != None ):
cmd.append(args)
#print 'CMD', cmd
if ( pid == None ):
if ( background ):
pid = self.nohup(cmd)
else:
pid = self.spawn(' '.join(cmd))
print 'PID ' + str(pid)
if ( c == 'ws' ):
os.chdir(here)
return