[svn] commit: r2004 - in /branches/trac40/src/bin/bind10: TODO bind10.py.in bob.spec

BIND 10 source code commits bind10-changes at lists.isc.org
Mon May 31 06:55:32 UTC 2010


Author: shane
Date: Mon May 31 06:55:31 2010
New Revision: 2004

Log:
Changes for Trac ticket #40 (review of the boss process).

Modified:
    branches/trac40/src/bin/bind10/TODO
    branches/trac40/src/bin/bind10/bind10.py.in
    branches/trac40/src/bin/bind10/bob.spec

Modified: branches/trac40/src/bin/bind10/TODO
==============================================================================
--- branches/trac40/src/bin/bind10/TODO (original)
+++ branches/trac40/src/bin/bind10/TODO Mon May 31 06:55:31 2010
@@ -1,4 +1,5 @@
-- Read msgq configuration from configuration manager
+- Read msgq configuration from configuration manager (Trac #213)
+  https://bind10.isc.org/ticket/213
 - Provide more administrator options:
   - Get process list
   - Get information on a process (returns list of times started & stopped, 

Modified: branches/trac40/src/bin/bind10/bind10.py.in
==============================================================================
--- branches/trac40/src/bin/bind10/bind10.py.in (original)
+++ branches/trac40/src/bin/bind10/bind10.py.in Mon May 31 06:55:31 2010
@@ -49,8 +49,6 @@
     DATAROOTDIR = "@datarootdir@"
     SPECFILE_LOCATION = "@datadir@/@PACKAGE@/bob.spec".replace("${datarootdir}", DATAROOTDIR).replace("${prefix}", PREFIX)
     
-# TODO: start up statistics thingy
-
 import subprocess
 import signal
 import re
@@ -63,10 +61,7 @@
 import isc.cc
 
 # This is the version that gets displayed to the user.
-__version__ = "v20100310"
-
-# Nothing at all to do with the 1990-12-10 article here:
-# http://www.subgenius.com/subg-digest/v2/0056.html
+__version__ = "v20100531"
 
 class RestartSchedule:
     """
@@ -116,7 +111,18 @@
 class ProcessInfo:
     """Information about a process"""
 
-    dev_null = open("/dev/null", "w")
+    dev_null = open(os.devnull, "w")
+
+    def __init__(self, name, args, env={}, dev_null_stdout=False,
+                 dev_null_stderr=False):
+        self.name = name 
+        self.args = args
+        self.env = env
+        self.dev_null_stdout = dev_null_stdout
+        self.dev_null_stderr = dev_null_stderr
+        self.restart_schedule = RestartSchedule()
+        self._spawn()
+
 
     def _spawn(self):
         if self.dev_null_stdout:
@@ -143,16 +149,6 @@
         self.pid = self.process.pid
         self.restart_schedule.set_run_start_time()
 
-    def __init__(self, name, args, env={}, dev_null_stdout=False,
-                 dev_null_stderr=False):
-        self.name = name 
-        self.args = args
-        self.env = env
-        self.dev_null_stdout = dev_null_stdout
-        self.dev_null_stderr = dev_null_stderr
-        self.restart_schedule = RestartSchedule()
-        self._spawn()
-
     def respawn(self):
         self._spawn()
 
@@ -179,37 +175,28 @@
 
     def config_handler(self, new_config):
         if self.verbose:
-            print("[bind10] handling new config:")
-            print(new_config)
+            sys.stdout.write("[bind10] handling new config:\n")
+            sys.stdout.write(new_config + "\n")
         answer = isc.config.ccsession.create_answer(0)
         return answer
         # TODO
 
     def command_handler(self, command, args):
         if self.verbose:
-            print("[bind10] Boss got command:")
-            print(command)
+            sys.stdout.write("[bind10] Boss got command:\n")
+            sys.stdout.write(command + "\n")
         answer = isc.config.ccsession.create_answer(1, "command not implemented")
         if type(command) != str:
             answer = isc.config.ccsession.create_answer(1, "bad command")
         else:
             cmd = command
             if cmd == "shutdown":
-                print("[bind10] got shutdown command")
+                sys.stdout.write("[bind10] got shutdown command\n")
                 self.runnable = False
                 answer = isc.config.ccsession.create_answer(0)
-            elif cmd == "print_message":
-                if args:
-                    print(args)
-                answer = isc.config.ccsession.create_answer(0, args)
-            elif cmd == "print_settings":
-                print("[bind10] Full Config:")
-                full_config = self.ccs.get_full_config()
-                for item in full_config:
-                    print(item + ": " + str(full_config[item]))
-                answer = isc.config.ccsession.create_answer(0)
             else:
-                answer = isc.config.ccsession.create_answer(1, "Unknown command")
+                answer = isc.config.ccsession.create_answer(1, 
+                                                            "Unknown command")
         return answer
     
     def startup(self):
@@ -228,6 +215,7 @@
             self.cc_session = isc.cc.Session(self.c_channel_port)
             return "b10-msgq already running, cannot start"
         except isc.cc.session.SessionError:
+            # this is the case we want, where the msgq is not running
             pass
 
         # start the c-channel daemon
@@ -255,7 +243,6 @@
                 self.cc_session = isc.cc.Session(self.c_channel_port)
             except isc.cc.session.SessionError:
                 time.sleep(0.1)
-        #self.cc_session.group_subscribe("Boss", "boss")
 
         # start the configuration manager
         if self.verbose:
@@ -268,24 +255,24 @@
             return "Unable to start b10-cfgmgr; " + str(e)
         self.processes[bind_cfgd.pid] = bind_cfgd
         if self.verbose:
-            sys.stdout.write("[bind10] Started b10-cfgmgr (PID %d)\n" % bind_cfgd.pid)
-
-        # TODO: once this interface is done, replace self.cc_session
-        # by this one
+            sys.stdout.write("[bind10] Started b10-cfgmgr (PID %d)\n" % 
+                             bind_cfgd.pid)
+
         # sleep until b10-cfgmgr is fully up and running, this is a good place
         # to have a (short) timeout on synchronized groupsend/receive
         # TODO: replace the sleep by a listen for ConfigManager started
         # message
         time.sleep(1)
         if self.verbose:
-            print("[bind10] starting ccsession")
-        self.ccs = isc.config.ModuleCCSession(SPECFILE_LOCATION, self.config_handler, self.command_handler)
+            sys.stdout.write("[bind10] starting ccsession\n")
+        self.ccs = isc.config.ModuleCCSession(SPECFILE_LOCATION, 
+                                      self.config_handler, self.command_handler)
         self.ccs.start()
         if self.verbose:
-            print("[bind10] ccsession started")
-
-        # start the xfrout before auth-server, to make sure every xfr-query can be
-        # processed properly.
+            sys.stdout.write("[bind10] ccsession started\n")
+
+        # start the xfrout before auth-server, to make sure every xfr-query can
+        # be processed properly.
         xfrout_args = ['b10-xfrout']
         if self.verbose:
             sys.stdout.write("Starting b10-xfrout\n")
@@ -441,65 +428,10 @@
                 if proc_info.name == "b10-msgq":
                     if self.verbose and self.runnable:
                         sys.stdout.write(
-                                     "The b10-msgq process died, shutting down.\n")
+                                 "The b10-msgq process died, shutting down.\n")
                     self.runnable = False
             else:
                 sys.stdout.write("Unknown child pid %d exited.\n" % pid)
-
-    # 'old' command style, uncommented for now
-    # move the handling below move to command_handler please
-    #def recv_and_process_cc_msg(self):
-        #"""Receive and process the next message on the c-channel,
-        #if any."""
-        #self.ccs.checkCommand()
-        #msg, envelope = self.cc_session.group_recvmsg(False)
-        #print(msg)
-        #if msg is None:
-        #    return
-        #if not ((type(msg) is dict) and (type(envelope) is dict)):
-        #    if self.verbose:
-        #        sys.stdout.write("Non-dictionary message\n")
-        #    return
-        #if not "command" in msg:
-        #    if self.verbose:
-        #        if "msg" in envelope:
-        #            del envelope['msg']
-        #        sys.stdout.write("Unknown message received\n")
-        #        sys.stdout.write(pprint.pformat(envelope) + "\n")
-        #        sys.stdout.write(pprint.pformat(msg) + "\n")
-        #    return
-
-        #cmd = msg['command']
-        #if not (type(cmd) is list):
-        #    if self.verbose:
-        #        sys.stdout.write("Non-list command\n")
-        #    return
-        #
-        # done checking and extracting... time to execute the command
-        #if cmd[0] == "shutdown":
-        #    if self.verbose:
-        #        sys.stdout.write("shutdown command received\n")
-        #    self.runnable = False
-        #    # XXX: reply here?
-        #elif cmd[0] == "getProcessList":
-        #    if self.verbose:
-        #        sys.stdout.write("getProcessList command received\n")
-        #    live_processes = [ ]
-        #    for proc_info in processes:
-        #        live_processes.append({ "name": proc_info.name, 
-        #                                "args": proc_info.args, 
-        #                                "pid": proc_info.pid, })
-        #    dead_processes = [ ]
-        #    for proc_info in dead_processes:
-        #        dead_processes.append({ "name": proc_info.name, 
-        #                                "args": proc_info.args, })
-        #    cc.group_reply(envelope, { "response": cmd,
-        #                               "sent": msg["sent"],
-        #                               "live_processes": live_processes,
-        #                               "dead_processes": dead_processes, })
-        #else:
-        #    if self.verbose:
-        #        sys.stdout.write("Unknown command %s\n" % str(cmd))
 
     def restart_processes(self):
         """Restart any dead processes."""
@@ -513,10 +445,6 @@
         for proc_info in self.dead_processes.values():
             restart_time = proc_info.restart_schedule.get_restart_time(now)
             if restart_time > now:
-#                if self.verbose:
-#                    sys.stdout.write("Dead %s process waiting %.1f seconds "\
-#                                     "for resurrection\n" % 
-#                                     (proc_info.name, (restart_time-now)))
                 if (next_restart is None) or (next_restart > restart_time):
                     next_restart = restart_time
                 still_dead[proc_info.pid] = proc_info

Modified: branches/trac40/src/bin/bind10/bob.spec
==============================================================================
--- branches/trac40/src/bin/bind10/bob.spec (original)
+++ branches/trac40/src/bin/bind10/bob.spec Mon May 31 06:55:31 2010
@@ -3,35 +3,8 @@
     "module_name": "Boss",
     "module_description": "Master process",
     "config_data": [
-      {
-        "item_name": "example_string",
-        "item_type": "string",
-        "item_optional": False,
-        "item_default": "Just an example string configuration value"
-      },
-      {
-        "item_name": "example_int",
-        "item_type": "integer",
-        "item_optional": False,
-        "item_default": 1
-      }
     ],
     "commands": [
-      {
-        "command_name": "print_message",
-        "command_description": "Print the given message to stdout",
-        "command_args": [ {
-          "item_name": "message",
-          "item_type": "string",
-          "item_optional": False,
-          "item_default": ""
-        } ]
-      },
-      {
-        "command_name": "print_settings",
-        "command_description": "Print some_string and some_int to stdout",
-        "command_args": []
-      },
       {
         "command_name": "shutdown",
         "command_description": "Shut down BIND 10",




More information about the bind10-changes mailing list