[Erp5-report] r45384 luke - in /slapos/trunk/util/slapos.tool.grid: ./ src/slapos/tool/grid/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Apr 13 15:38:45 CEST 2011


Author: luke
Date: Wed Apr 13 15:38:45 2011
New Revision: 45384

URL: http://svn.erp5.org?rev=45384&view=rev
Log:
 - provide own, slapos compatible wrappers for supervisor

Modified:
    slapos/trunk/util/slapos.tool.grid/setup.py
    slapos/trunk/util/slapos.tool.grid/src/slapos/tool/grid/svcbackend.py

Modified: slapos/trunk/util/slapos.tool.grid/setup.py
URL: http://svn.erp5.org/slapos/trunk/util/slapos.tool.grid/setup.py?rev=45384&r1=45383&r2=45384&view=diff
==============================================================================
--- slapos/trunk/util/slapos.tool.grid/setup.py [utf8] (original)
+++ slapos/trunk/util/slapos.tool.grid/setup.py [utf8] Wed Apr 13 15:38:45 2011
@@ -40,6 +40,7 @@ setup(
     slapgrid-sr = %(name)s.slapgrid:runSoftwareRelease
     slapgrid-cp = %(name)s.slapgrid:runComputerPartition
     slapgrid-ur = %(name)s.slapgrid:runUsageReport
-    slapgrid-supervisor = supervisor.supervisorctl:main
+    slapgrid-supervisorctl = %(name)s.svcbackend:supervisorctl
+    slapgrid-supervisord = %(name)s.svcbackend:supervisord
     """ % dict(name=name),
     )

Modified: slapos/trunk/util/slapos.tool.grid/src/slapos/tool/grid/svcbackend.py
URL: http://svn.erp5.org/slapos/trunk/util/slapos.tool.grid/src/slapos/tool/grid/svcbackend.py?rev=45384&r1=45383&r2=45384&view=diff
==============================================================================
--- slapos/trunk/util/slapos.tool.grid/src/slapos/tool/grid/svcbackend.py [utf8] (original)
+++ slapos/trunk/util/slapos.tool.grid/src/slapos/tool/grid/svcbackend.py [utf8] Wed Apr 13 15:38:45 2011
@@ -31,6 +31,8 @@ import logging
 import os
 import sys
 import xmlrpclib
+from optparse import OptionParser
+import ConfigParser
 
 
 def getSupervisorRPC(socket):
@@ -80,3 +82,52 @@ def launchSupervisord(socket, configurat
     log_message = 'Supervisord unknown problem: %s' % result
     logger.info(log_message)
 
+
+def getOptionDict(*argument_tuple):
+  usage = """
+Typical usage:
+ * %prog CONFIGURATION_FILE [arguments passed to supervisor]
+
+""".strip()
+
+  parser = OptionParser(usage=usage)
+  # Parses arguments
+  if argument_tuple == ():
+    # No arguments given to entry point : we parse sys.argv.
+    (argument_option_instance, argument_list) = parser.parse_args()
+  else:
+    (argument_option_instance, argument_list) = \
+      parser.parse_args(list(argument_tuple))
+  if len(argument_list) == 0:
+    parser.error("Configuration file is obligatory. Consult documentation by "
+        "calling with -h.")
+  configuration_file = argument_list[0]
+  if not os.path.exists(configuration_file):
+    parser.error("Could not read configuration file : %s" \
+        % configuration_file)
+  slapgrid_configuration = ConfigParser.SafeConfigParser()
+  slapgrid_configuration.read(configuration_file)
+  # Merges the two dictionnaries
+  option_dict = dict(slapgrid_configuration.items("slapos"))
+  # Supervisord configuration location
+  if not option_dict.get('supervisord_configuration_path'):
+    option_dict['supervisord_configuration_path'] = \
+      os.path.join(option_dict['instance_root'], 'etc', 'supervisord.conf')
+  # Supervisord socket
+  if not option_dict.get('supervisord_socket'):
+    option_dict['supervisord_socket'] = \
+      os.path.join(option_dict['instance_root'], 'supervisord.socket')
+  return option_dict, argument_list[1:]
+
+
+def supervisorctl(*argument_tuple):
+  option_dict, args = getOptionDict(*argument_tuple)
+  import supervisor.supervisorctl
+  supervisor.supervisorctl.main(args=['-c',
+    option_dict['supervisord_configuration_path']] + args)
+
+def supervisord(*argument_tuple):
+  option_dict, dummy = getOptionDict(*argument_tuple)
+  dummy = dummy
+  launchSupervisord(option_dict['supervisord_socket'],
+      option_dict['supervisord_configuration_path'])



More information about the Erp5-report mailing list