You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/08/05 22:39:18 UTC

svn commit: r1510717 - in /uima/sandbox/uima-ducc/trunk/src/main/admin: ducc.py ducc_util.py start_ducc

Author: challngr
Date: Mon Aug  5 20:39:18 2013
New Revision: 1510717

URL: http://svn.apache.org/r1510717
Log:
UIMA-3012 Single user mode -s can be specified on start_ducc to inhibit ducc_ling checks.

Modified:
    uima/sandbox/uima-ducc/trunk/src/main/admin/ducc.py
    uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_util.py
    uima/sandbox/uima-ducc/trunk/src/main/admin/start_ducc

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/ducc.py
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/ducc.py?rev=1510717&r1=1510716&r2=1510717&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/ducc.py (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/ducc.py Mon Aug  5 20:39:18 2013
@@ -56,7 +56,7 @@ class Ducc(DuccUtil):
         
         print "Started AMQ broker"
 
-    def run_component(self, component, or_parms, numagents, rmoverride, background, nodup, localdate):
+    def run_component(self, component, or_parms, numagents, rmoverride, background, nodup, localdate, single_user):
 
         if ( component == 'all' ):
             component = 'rm,sm,pm,ws,orchestrator'
@@ -86,11 +86,14 @@ class Ducc(DuccUtil):
                 if ( not self.check_clock_skew(localdate) ):
                     return
 
-                dok = self.verify_duccling()
-                if ( not dok ):
-                    print 'NOTOK ducc_ling is not set up correctly on node', self.localhost
-                    print dok
-                    return
+                if ( not single_user ) :
+                    dok = self.verify_duccling()
+                    if ( not dok ):
+                        print 'NOTOK ducc_ling is not set up correctly on node', self.localhost
+                        print dok
+                        return
+                else:
+                    print 'Single user mode: bypassing ducc_ling checks.'
 
                 if ( not verify_slave_node(localdate, self.ducc_properties) ):
                     # we assume that verify_local_node is spewing a line of the form
@@ -218,6 +221,7 @@ class Ducc(DuccUtil):
         print '   -n <numagents> if > 1, multiple agents are started (testing mode)'
         print '   -o <mem-in-GB> rm memory override for use on small machines'
         print '   -k causes the entire DUCC system to shutdown'
+        print '   -s start in single-user mode (inhibit some sanity checks)'
         print '   --nodup If specified, do not start a process if it appears to be already started.'
         print '   --or_parms [cold|warm|hot]'
         print '   --ducc_head nodename the name of the "ducc head" where ducc is started from'
@@ -233,11 +237,12 @@ class Ducc(DuccUtil):
         shutdown = False
         background = False
         or_parms = None
+        single_user = False
         nodup = False           # we allow duplicates unless asked not to
         localdate = 0
 
         try:
-           opts, args = getopt.getopt(argv, 'bc:d:n:o:k?v', ['or_parms=', 'nodup' ])
+           opts, args = getopt.getopt(argv, 'bc:d:n:o:sk?v', ['or_parms=', 'nodup' ])
         except:
             self.usage('Bad arguments ' + ' '.join(argv))
     
@@ -256,6 +261,8 @@ class Ducc(DuccUtil):
                 rmoverride = a
             elif ( o == '-k'):
                 shutdown = True
+            elif ( o == '-s'):
+                single_user = True
             elif ( o == '--or_parms' ):
                 or_parms = a
             elif ( o == '--nodup' ):
@@ -279,7 +286,7 @@ class Ducc(DuccUtil):
         if ( component == 'broker' ):
             self.run_broker(background)
         else:
-            self.run_component(component, or_parms, numagents, rmoverride, background, nodup, localdate)
+            self.run_component(component, or_parms, numagents, rmoverride, background, nodup, localdate, single_user)
         return
 
     def __call__(self, *args):

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_util.py
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_util.py?rev=1510717&r1=1510716&r2=1510717&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_util.py (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_util.py Mon Aug  5 20:39:18 2013
@@ -106,6 +106,7 @@ class DuccUtil(DuccBase):
         # tcp        0      0 :::61616                :::*                    LISTEN      
         for line in lines:
             toks = line.split()
+            #print '[]', line
             if ( toks[-1] == 'LISTEN' ):
                 port = toks[3]
                 if (port.endswith(self.broker_port)):

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/start_ducc
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/start_ducc?rev=1510717&r1=1510716&r2=1510717&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/start_ducc (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/start_ducc Mon Aug  5 20:39:18 2013
@@ -56,7 +56,7 @@ class StartDucc(DuccUtil):
             print 'Waiting for broker', str(i)
             time.sleep(1)
 
-    def start_component(self, ducc, component, or_parms):
+    def start_component(self, ducc, component, or_parms, single_user):
 
         node = self.ducc_properties.get('ducc.head')
         com = component
@@ -82,7 +82,11 @@ class StartDucc(DuccUtil):
         if ( node == 'local' ):
             node = self.localhost
 
-        lines = self.ssh(node, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c', com, '-b', or_parms, '-d', str(time.time()), '--nodup', "'")
+        if ( single_user ):
+            lines = self.ssh(node, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c', com, '-s', '-b', or_parms, '-d', str(time.time()), '--nodup', "'")
+        else:
+            lines = self.ssh(node, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c', com, '-b', or_parms, '-d', str(time.time()), '--nodup', "'")
+
         # we'll capture anything that the python shell spews because it may be useful, and then drop the
         # pipe when we see a PID message
         while 1:
@@ -102,7 +106,7 @@ class StartDucc(DuccUtil):
         if ( com in self.default_components ):           # tracks where the management processes are
             self.pids.put(com, com + '@' + node)
 
-    def start_agents(self, nodelist):
+    def start_agents(self, nodelist, single_user):
 
         # print 'NODELIST', nodelist
         #counter = 1
@@ -112,7 +116,11 @@ class StartDucc(DuccUtil):
             
             spacer = '   '
             print host
-            lines = self.ssh(host, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c' 'agent', '-b', '-d', str(time.time()), '--nodup', "'")
+            if (single_user):
+                lines = self.ssh(host, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c' 'agent', '-s', '-b', '-d', str(time.time()), '--nodup', "'")
+            else:
+                lines = self.ssh(host, True, "'", self.DUCC_HOME + '/admin/ducc.py', '-c' 'agent', '-b', '-d', str(time.time()), '--nodup', "'")
+
             while 1:
                 line = lines.readline().strip()
                 #print '[l]' + line
@@ -170,6 +178,10 @@ class StartDucc(DuccUtil):
         print "   -m --management"
         print "        Start the management processes (rm, sm, pm, webserver, orchestrator) on the local node."
         print ""
+        print "   -s --singleuser"
+        print "        Start ducc in 'single user mode'.  This bypasses some checking required for multi-user"
+        print "        mode and not required for single-user mode."
+        print ""
         print "   -c, --component component"
         print "        Start a specific DUCC component, optionally on a specific node.  If the component name"
         print "        is qualified with a nodename, the component is started on that node.  To qualify a"
@@ -224,13 +236,14 @@ class StartDucc(DuccUtil):
 
         nodefiles = []
         components = []
-        management = False
+        management = True
+        single_user = False
         or_parms = self.ducc_properties.get('ducc.orchestrator.start.type')
         self.pids = DuccProperties()
         self.pids.load_if_exists(self.pid_file)
         
         try:
-            opts, args = getopt.getopt(argv, 'c:mn:h?v', ['component=', 'components=', 'help', 'nodelist=', 'management', 'cold', 'warm', 'hot'])
+            opts, args = getopt.getopt(argv, 'c:mn:sh?v', ['component=', 'components=', 'help', 'nodelist=', 'management', 'singleuser', 'cold', 'warm', 'hot'])
         except:
             self.invalid('Invalid arguments', ' '.join(argv))
                        
@@ -241,6 +254,8 @@ class StartDucc(DuccUtil):
                 management = True
             elif o in ( '-n', '--nodelist' ):
                 nodefiles.append(a)
+            elif o in ( '-s', '--singleuser' ):
+                single_user = True
             elif o in ( '--cold', '--warm', '--hot' ):
                 or_parms = o[2:]         # (strip the leading --)
             elif ( o == '-v'):
@@ -249,17 +264,17 @@ class StartDucc(DuccUtil):
             elif o in ( '-h', '--help' ):
                self.usage(None)
             elif ( o == '-?'):
-               self.usage(None)
+                self.usage(None)
             else:
                 self.invalid('bad args: ', ' '.join(argv))
 
         # 'management' means start all the management daemons - if specific components are also specified
         # there is at least a redundancy and maybe also a conflict.
         if ( (len(components) != 0) and management ):
-            self.invalid("The --management and --compoent options are mutually exclusive")
+            self.invalid("The --management and --component options are mutually exclusive")
 
-        # no args - make equivalent of -management and -nodefile=DUCC.HOME/resources/ducc.nodes
-        if ( len(argv) == 0 ):
+        # no args, or just -s - make equivalent of -management and -nodefile=DUCC.HOME/resources/ducc.nodes
+        if ( (len(argv) == 0) or ((len(argv) == 1) and single_user) ):
             nodefiles =  self.default_nodefiles
             components = self.default_components
             must_verify_nodepools = True
@@ -320,7 +335,7 @@ class StartDucc(DuccUtil):
 
         for (nodefile, nodelist) in nodes.items():
             print '********** Starting agents from file', nodefile
-            self.start_agents(nodelist)
+            self.start_agents(nodelist, single_user)
 
         if ( len(components) != 0 ):
             print 'Starting', or_parms
@@ -329,7 +344,7 @@ class StartDucc(DuccUtil):
                 if ( com == 'broker' ):
                     pass     # already started
                 else:
-                    self.start_component(ducc, com, or_parms)
+                    self.start_component(ducc, com, or_parms, single_user)
         else:
             print 'Not starting management components.'