LGTM

On Fri, Sep 16, 2011 at 4:49 PM, Ethan Jackson <[email protected]> wrote:

> The python style guide requires two newlines between top level
> definitions.  This patch also removes some trailing whitespace.
> ---
>  python/ovs/daemon.py |   34 +++++++++++++++++++++++++++++-----
>  1 files changed, 29 insertions(+), 5 deletions(-)
>
> diff --git a/python/ovs/daemon.py b/python/ovs/daemon.py
> index ba18d86..a14be82 100644
> --- a/python/ovs/daemon.py
> +++ b/python/ovs/daemon.py
> @@ -54,6 +54,7 @@ _daemonize_fd = None
>
>  RESTART_EXIT_CODE = 5
>
> +
>  def make_pidfile_name(name):
>     """Returns the file name that would be used for a pidfile if 'name'
> were
>     provided to set_pidfile()."""
> @@ -62,31 +63,36 @@ def make_pidfile_name(name):
>     else:
>         return ovs.util.abs_file_name(ovs.dirs.RUNDIR, name)
>
> +
>  def set_pidfile(name):
>     """Sets up a following call to daemonize() to create a pidfile named
>     'name'.  If 'name' begins with '/', then it is treated as an absolute
> path.
>     Otherwise, it is taken relative to ovs.util.RUNDIR, which is
>     $(prefix)/var/run by default.
> -
> +
>     If 'name' is null, then ovs.util.PROGRAM_NAME followed by ".pid" is
>     used."""
>     global _pidfile
>     _pidfile = make_pidfile_name(name)
>
> +
>  def get_pidfile():
>     """Returns an absolute path to the configured pidfile, or None if no
>     pidfile is configured."""
>     return _pidfile
>
> +
>  def set_no_chdir():
>     """Sets that we do not chdir to "/"."""
>     global _chdir
>     _chdir = False
>
> +
>  def is_chdir_enabled():
>     """Will we chdir to "/" as part of daemonizing?"""
>     return _chdir
>
> +
>  def ignore_existing_pidfile():
>     """Normally, daemonize() or daemonize_start() will terminate the
> program
>     with a message if a locked pidfile already exists.  If this function is
> @@ -94,27 +100,32 @@ def ignore_existing_pidfile():
>     global _overwrite_pidfile
>     _overwrite_pidfile = True
>
> +
>  def set_detach():
>     """Sets up a following call to daemonize() to detach from the
> foreground
>     session, running this process in the background."""
>     global _detach
>     _detach = True
>
> +
>  def get_detach():
>     """Will daemonize() really detach?"""
>     return _detach
>
> +
>  def set_monitor():
>     """Sets up a following call to daemonize() to fork a supervisory
> process to
>     monitor the daemon and restart it if it dies due to an error signal."""
>     global _monitor
>     _monitor = True
>
> +
>  def _fatal(msg):
>     logging.error(msg)
>     sys.stderr.write("%s\n" % msg)
>     sys.exit(1)
>
> +
>  def _make_pidfile():
>     """If a pidfile has been configured, creates it and stores the running
>     process's pid in it.  Ensures that the pidfile will be deleted when the
> @@ -172,7 +183,6 @@ def _make_pidfile():
>             _fatal("failed to link \"%s\" as \"%s\" (%s)"
>                    % (tmpfile, _pidfile, os.strerror(error)))
>
> -
>     # Ensure that the pidfile will get deleted on exit.
>     ovs.fatal_signal.add_file_to_unlink(_pidfile)
>
> @@ -187,12 +197,14 @@ def _make_pidfile():
>     _pidfile_dev = s.st_dev
>     _pidfile_ino = s.st_ino
>
> +
>  def daemonize():
>     """If configured with set_pidfile() or set_detach(), creates the pid
> file
>     and detaches from the foreground session."""
>     daemonize_start()
>     daemonize_complete()
>
> +
>  def _waitpid(pid, options):
>     while True:
>         try:
> @@ -202,6 +214,7 @@ def _waitpid(pid, options):
>                 pass
>             return -e.errno, 0
>
> +
>  def _fork_and_wait_for_startup():
>     try:
>         rfd, wfd = os.pipe()
> @@ -250,6 +263,7 @@ def _fork_and_wait_for_startup():
>         _daemonize_fd = wfd
>     return pid
>
> +
>  def _fork_notify_startup(fd):
>     if fd is not None:
>         error, bytes_written = ovs.socket_util.write_fully(fd, "0")
> @@ -258,6 +272,7 @@ def _fork_notify_startup(fd):
>             sys.exit(1)
>         os.close(fd)
>
> +
>  def _should_restart(status):
>     global RESTART_EXIT_CODE
>
> @@ -271,6 +286,7 @@ def _should_restart(status):
>                 return True
>     return False
>
> +
>  def _monitor_daemon(daemon_pid):
>     # XXX should log daemon's stderr output at startup time
>     # XXX should use setproctitle module if available
> @@ -283,7 +299,7 @@ def _monitor_daemon(daemon_pid):
>         elif retval == daemon_pid:
>             status_msg = ("pid %d died, %s"
>                           % (daemon_pid, ovs.process.status_msg(status)))
> -
> +
>             if _should_restart(status):
>                 if os.WCOREDUMP(status):
>                     # Disable further core dumps to save disk space.
> @@ -316,6 +332,7 @@ def _monitor_daemon(daemon_pid):
>
>    # Running in new daemon process.
>
> +
>  def _close_standard_fds():
>     """Close stdin, stdout, stderr.  If we're started from e.g. an SSH
> session,
>     then this keeps us from holding that session open artificially."""
> @@ -325,13 +342,14 @@ def _close_standard_fds():
>         os.dup2(null_fd, 1)
>         os.dup2(null_fd, 2)
>
> +
>  def daemonize_start():
>     """If daemonization is configured, then starts daemonization, by
> forking
>     and returning in the child process.  The parent process hangs around
> until
>     the child lets it know either that it completed startup successfully
> (by
>     calling daemon_complete()) or that it failed to start up (by exiting
> with a
>     nonzero exit code)."""
> -
> +
>     if _detach:
>         if _fork_and_wait_for_startup() > 0:
>             # Running in parent process.
> @@ -347,10 +365,11 @@ def daemonize_start():
>             _close_standard_fds()
>             _monitor_daemon(daemon_pid)
>         # Running in daemon process
> -
> +
>     if _pidfile:
>         _make_pidfile()
>
> +
>  def daemonize_complete():
>     """If daemonization is configured, then this function notifies the
> parent
>     process that the child process has completed startup successfully."""
> @@ -362,6 +381,7 @@ def daemonize_complete():
>             os.chdir("/")
>         _close_standard_fds()
>
> +
>  def usage():
>     sys.stdout.write("""
>  Daemon options:
> @@ -371,6 +391,7 @@ Daemon options:
>    --overwrite-pidfile     with --pidfile, start even if already running
>  """ % (ovs.dirs.RUNDIR, ovs.util.PROGRAM_NAME))
>
> +
>  def __read_pidfile(pidfile, delete_if_stale):
>     if _pidfile_dev is not None:
>         try:
> @@ -449,11 +470,13 @@ def __read_pidfile(pidfile, delete_if_stale):
>         except IOError:
>             pass
>
> +
>  def read_pidfile(pidfile):
>     """Opens and reads a PID from 'pidfile'.  Returns the positive PID if
>     successful, otherwise a negative errno value."""
>     return __read_pidfile(pidfile, False)
>
> +
>  def _check_already_running():
>     pid = __read_pidfile(_pidfile, True)
>     if pid > 0:
> @@ -468,6 +491,7 @@ def _check_already_running():
>  LONG_OPTIONS = ["detach", "no-chdir", "pidfile", "pidfile-name=",
>                 "overwrite-pidfile", "monitor"]
>
> +
>  def parse_opt(option, arg):
>     if option == '--detach':
>         set_detach()
> --
> 1.7.6.1
>
> _______________________________________________
> dev mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to