[svn] commit: r3052 - in /trunk: ./ src/bin/ src/bin/bind10/ src/bin/bind10/tests/ src/bin/bindctl/ src/bin/cfgmgr/ src/bin/cmdctl/ src/bin/loadzone/ src/bin/msgq/ src/bin/tests/ src/bin/usermgr/ src/bin/xfrin/ src/bin/xfrout/ src/bin/zonemgr/ src/lib/python/isc/ src/lib/python/isc/utils/ src/lib/python/isc/utils/tests/
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Sep 28 11:01:19 UTC 2010
Author: vorner
Date: Tue Sep 28 11:01:19 2010
New Revision: 3052
Log:
Merge #322
Added:
trunk/src/bin/tests/
trunk/src/bin/tests/Makefile.am
trunk/src/bin/tests/README
trunk/src/bin/tests/process_rename_test.py.in
trunk/src/lib/python/isc/utils/
trunk/src/lib/python/isc/utils/Makefile.am
trunk/src/lib/python/isc/utils/__init__.py
trunk/src/lib/python/isc/utils/process.py
trunk/src/lib/python/isc/utils/tests/
trunk/src/lib/python/isc/utils/tests/Makefile.am
trunk/src/lib/python/isc/utils/tests/process_test.py
Modified:
trunk/configure.ac
trunk/src/bin/Makefile.am
trunk/src/bin/bind10/bind10.8
trunk/src/bin/bind10/bind10.py.in
trunk/src/bin/bind10/bind10.xml
trunk/src/bin/bind10/tests/args_test.py
trunk/src/bin/bindctl/bindctl-source.py.in
trunk/src/bin/cfgmgr/b10-cfgmgr.py.in
trunk/src/bin/cmdctl/cmdctl.py.in
trunk/src/bin/loadzone/b10-loadzone.py.in
trunk/src/bin/msgq/msgq.py.in
trunk/src/bin/usermgr/b10-cmdctl-usermgr.py.in
trunk/src/bin/xfrin/xfrin.py.in
trunk/src/bin/xfrout/xfrout.py.in
trunk/src/bin/zonemgr/zonemgr.py.in
trunk/src/lib/python/isc/Makefile.am
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Tue Sep 28 11:01:19 2010
@@ -47,6 +47,12 @@
if test $enable_shared = no; then
AC_MSG_ERROR([BIND 10 requires shared libraries to be built])
fi
+
+# allow configuring without setproctitle.
+AC_ARG_ENABLE(setproctitle-check,
+AC_HELP_STRING([--disable-setproctitle-check],
+ [do not check for python setproctitle module (used to give nice names to python processes)]),
+ setproctitle_check=$enableval, setproctitle_check=yes)
# OS dependent configuration
SET_ENV_LIBRARY_PATH=no
@@ -161,6 +167,18 @@
fi
AC_SUBST(PYTHON_LIB)
LDFLAGS=$LDFLAGS_SAVED
+
+# Check for the setproctitle module
+if test "$setproctitle_check" = "yes" ; then
+ AC_MSG_CHECKING(for setproctitle module)
+ if "$PYTHON" -c 'import setproctitle' 2>/dev/null ; then
+ AC_MSG_RESULT(ok)
+ else
+ AC_MSG_RESULT(missing)
+ AC_MSG_ERROR([Missing setproctitle module. Either install it or provide --disable-setproctitle-check.
+In that case we will continue, but naming of python processes will not work.])
+ fi
+fi
# TODO: check for _sqlite3.py module
@@ -451,6 +469,7 @@
src/bin/zonemgr/Makefile
src/bin/zonemgr/tests/Makefile
src/bin/usermgr/Makefile
+ src/bin/tests/Makefile
src/lib/Makefile
src/lib/bench/Makefile
src/lib/bench/example/Makefile
@@ -459,6 +478,8 @@
src/lib/cc/tests/Makefile
src/lib/python/Makefile
src/lib/python/isc/Makefile
+ src/lib/python/isc/utils/Makefile
+ src/lib/python/isc/utils/tests/Makefile
src/lib/python/isc/datasrc/Makefile
src/lib/python/isc/cc/Makefile
src/lib/python/isc/cc/tests/Makefile
@@ -517,6 +538,7 @@
src/bin/msgq/run_msgq.sh
src/bin/auth/auth.spec.pre
src/bin/auth/spec_config.h.pre
+ src/bin/tests/process_rename_test.py
src/lib/config/tests/data_def_unittests_config.h
src/lib/python/isc/config/tests/config_test
src/lib/python/isc/cc/tests/cc_test
Modified: trunk/src/bin/Makefile.am
==============================================================================
--- trunk/src/bin/Makefile.am (original)
+++ trunk/src/bin/Makefile.am Tue Sep 28 11:01:19 2010
@@ -1,1 +1,4 @@
-SUBDIRS = bind10 bindctl cfgmgr loadzone msgq host cmdctl auth xfrin xfrout usermgr zonemgr
+SUBDIRS = bind10 bindctl cfgmgr loadzone msgq host cmdctl auth xfrin xfrout \
+ usermgr zonemgr tests
+
+check-recursive: all-recursive
Modified: trunk/src/bin/bind10/bind10.8
==============================================================================
--- trunk/src/bin/bind10/bind10.8 (original)
+++ trunk/src/bin/bind10/bind10.8 Tue Sep 28 11:01:19 2010
@@ -1,13 +1,22 @@
'\" t
.\" Title: bind10
.\" Author: [see the "AUTHORS" section]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Generator: DocBook XSL Stylesheets v1.76.0 <http://docbook.sf.net/>
.\" Date: July 29, 2010
.\" Manual: BIND10
.\" Source: BIND10
.\" Language: English
.\"
.TH "BIND10" "8" "July 29, 2010" "BIND10" "BIND10"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -22,7 +31,7 @@
bind10 \- BIND 10 boss process
.SH "SYNOPSIS"
.HP \w'\fBbind10\fR\ 'u
-\fBbind10\fR [\fB\-a\ \fR\fB\fIaddress\fR\fR] [\fB\-m\ \fR\fB\fIfile\fR\fR] [\fB\-n\fR] [\fB\-p\ \fR\fB\fInumber\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-\-address\ \fR\fB\fIaddress\fR\fR] [\fB\-\-msgq\-socket\-file\ \fR\fB\fIfile\fR\fR] [\fB\-\-no\-cache\fR] [\fB\-\-port\ \fR\fB\fInumber\fR\fR] [\fB\-\-user\ \fR\fB\fIuser\fR\fR] [\fB\-\-verbose\fR]
+\fBbind10\fR [\fB\-a\ \fR\fB\fIaddress\fR\fR] [\fB\-m\ \fR\fB\fIfile\fR\fR] [\fB\-n\fR] [\fB\-p\ \fR\fB\fInumber\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-\-address\ \fR\fB\fIaddress\fR\fR] [\fB\-\-msgq\-socket\-file\ \fR\fB\fIfile\fR\fR] [\fB\-\-no\-cache\fR] [\fB\-\-port\ \fR\fB\fInumber\fR\fR] [\fB\-\-user\ \fR\fB\fIuser\fR\fR] [\fB\-\-pretty\-name\ \fR\fB\fIname\fR\fR] [\fB\-\-verbose\fR]
.SH "DESCRIPTION"
.PP
The
@@ -86,6 +95,15 @@
must be initially ran as the root user to use this option\&. The default is to run as the current user\&.
.RE
.PP
+\fB\-\-pretty\-name \fR\fB\fIname\fR\fR
+.RS 4
+The name this process should have in tools like
+\fBps\fR
+or
+\fBtop\fR\&. This is handy if you have multiple versions/installations of
+\fBbind10\fR\&.
+.RE
+.PP
\fB\-v\fR, \fB\-\-verbose\fR
.RS 4
Display more about what is going on for
Modified: trunk/src/bin/bind10/bind10.py.in
==============================================================================
--- trunk/src/bin/bind10/bind10.py.in (original)
+++ trunk/src/bin/bind10/bind10.py.in Tue Sep 28 11:01:19 2010
@@ -63,6 +63,10 @@
import posix
import isc.cc
+import isc.utils.process
+
+# Assign this process some longer name
+isc.utils.process.rename(sys.argv[0])
# This is the version that gets displayed to the user.
# The VERSION string consists of the module name, the module version
@@ -620,7 +624,11 @@
parser.values.address = value
else:
raise OptionValueError("Unknown option " + opt_str)
-
+
+def process_rename(option, opt_str, value, parser):
+ """Function that renames the process if it is requested by a option."""
+ isc.utils.process.rename(value)
+
def main():
global options
global boss_of_bind
@@ -646,6 +654,9 @@
help="Change user after startup (must run as root)")
parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
help="display more about what is going on")
+ parser.add_option("--pretty-name", type="string", action="callback",
+ callback=process_rename,
+ help="Set the process name (displayed in ps, top, ...)")
(options, args) = parser.parse_args()
if args:
parser.print_help()
Modified: trunk/src/bin/bind10/bind10.xml
==============================================================================
--- trunk/src/bin/bind10/bind10.xml (original)
+++ trunk/src/bin/bind10/bind10.xml Tue Sep 28 11:01:19 2010
@@ -56,6 +56,7 @@
<arg><option>--no-cache</option></arg>
<arg><option>--port <replaceable>number</replaceable></option></arg>
<arg><option>--user <replaceable>user</replaceable></option></arg>
+ <arg><option>--pretty-name <replaceable>name</replaceable></option></arg>
<arg><option>--verbose</option></arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -149,6 +150,17 @@
</varlistentry>
<varlistentry>
+ <term><option>--pretty-name <replaceable>name</replaceable></option></term>
+
+ <listitem>
+ <para>The name this process should have in tools like
+ <command>ps</command> or <command>top</command>. This
+ is handy if you have multiple versions/installations
+ of <command>bind10</command>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-v</option>, <option>--verbose</option></term>
<listitem>
<para>Display more about what is going on for
Modified: trunk/src/bin/bind10/tests/args_test.py
==============================================================================
--- trunk/src/bin/bind10/tests/args_test.py (original)
+++ trunk/src/bin/bind10/tests/args_test.py Tue Sep 28 11:01:19 2010
@@ -130,5 +130,28 @@
x = bob.wait()
self.assertTrue(bob.wait() == 0)
+ def testPrettyName(self):
+ """Try the --pretty-name option."""
+ CMD_PRETTY_NAME = b'bob-name-test'
+ bob = subprocess.Popen(args=(BIND10_EXE, '--pretty-name',
+ CMD_PRETTY_NAME), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ started_ok = self._waitForString(bob, '[bind10] BIND 10 started')
+ self.assertTrue(started_ok)
+ ps = subprocess.Popen(args=("ps", "axo", "pid,comm"),
+ stdout=subprocess.PIPE)
+ s = ps.stdout.readline()
+ command = None
+ while True:
+ s = ps.stdout.readline()
+ if s == '': break
+ (pid,comm) = s.split(None, 1)
+ if int(pid) == bob.pid:
+ command = comm
+ break
+ self.assertEqual(command, CMD_PRETTY_NAME + b'\n')
+ time.sleep(0.1)
+ bob.terminate()
+ bob.wait()
+
if __name__ == '__main__':
unittest.main()
Modified: trunk/src/bin/bindctl/bindctl-source.py.in
==============================================================================
--- trunk/src/bin/bindctl/bindctl-source.py.in (original)
+++ trunk/src/bin/bindctl/bindctl-source.py.in Tue Sep 28 11:01:19 2010
@@ -24,6 +24,9 @@
from bindctl.bindcmd import *
import pprint
from optparse import OptionParser, OptionValueError
+import isc.utils.process
+
+isc.utils.process.rename()
__version__ = 'Bindctl'
Modified: trunk/src/bin/cfgmgr/b10-cfgmgr.py.in
==============================================================================
--- trunk/src/bin/cfgmgr/b10-cfgmgr.py.in (original)
+++ trunk/src/bin/cfgmgr/b10-cfgmgr.py.in Tue Sep 28 11:01:19 2010
@@ -21,8 +21,11 @@
from isc.config.cfgmgr import ConfigManager, ConfigManagerDataReadError
from isc.cc import SessionError
+import isc.utils.process
import signal
import os
+
+isc.utils.process.rename()
# If B10_FROM_SOURCE is set in the environment, we use data files
# from a directory relative to that, otherwise we use the ones
Modified: trunk/src/bin/cmdctl/cmdctl.py.in
==============================================================================
--- trunk/src/bin/cmdctl/cmdctl.py.in (original)
+++ trunk/src/bin/cmdctl/cmdctl.py.in Tue Sep 28 11:01:19 2010
@@ -42,12 +42,15 @@
import time
import signal
from isc.config import ccsession
+import isc.utils.process
from optparse import OptionParser, OptionValueError
from hashlib import sha1
try:
import threading
except ImportError:
import dummy_threading as threading
+
+isc.utils.process.rename()
__version__ = 'BIND10'
URL_PATTERN = re.compile('/([\w]+)(?:/([\w]+))?/?')
Modified: trunk/src/bin/loadzone/b10-loadzone.py.in
==============================================================================
--- trunk/src/bin/loadzone/b10-loadzone.py.in (original)
+++ trunk/src/bin/loadzone/b10-loadzone.py.in Tue Sep 28 11:01:19 2010
@@ -18,9 +18,13 @@
import sys; sys.path.append ('@@PYTHONPATH@@')
import re, getopt
import isc.datasrc
+import isc.utils.process
from isc.datasrc.master import MasterFile
import time
import os
+
+isc.utils.process.rename()
+
#########################################################################
# usage: print usage note and exit
#########################################################################
Modified: trunk/src/bin/msgq/msgq.py.in
==============================================================================
--- trunk/src/bin/msgq/msgq.py.in (original)
+++ trunk/src/bin/msgq/msgq.py.in Tue Sep 28 11:01:19 2010
@@ -31,8 +31,11 @@
import pprint
import random
from optparse import OptionParser, OptionValueError
+import isc.utils.process
import isc.cc
+
+isc.utils.process.rename()
# This is the version that gets displayed to the user.
__version__ = "v20091030 (Paving the DNS Parking Lot)"
Modified: trunk/src/bin/usermgr/b10-cmdctl-usermgr.py.in
==============================================================================
--- trunk/src/bin/usermgr/b10-cmdctl-usermgr.py.in (original)
+++ trunk/src/bin/usermgr/b10-cmdctl-usermgr.py.in Tue Sep 28 11:01:19 2010
@@ -25,6 +25,9 @@
import getpass
import getopt
import sys
+import isc.utils.process
+
+isc.utils.process.rename()
VERSION_NUMBER = 'bind10'
DEFAULT_FILE = 'cmdctl-accounts.csv'
Modified: trunk/src/bin/xfrin/xfrin.py.in
==============================================================================
--- trunk/src/bin/xfrin/xfrin.py.in (original)
+++ trunk/src/bin/xfrin/xfrin.py.in Tue Sep 28 11:01:19 2010
@@ -29,12 +29,15 @@
from optparse import OptionParser, OptionValueError
from isc.config.ccsession import *
from isc.notify import notify_out
+import isc.utils.process
try:
from pydnspp import *
except ImportError as e:
# C++ loadable module may not be installed; even so the xfrin process
# must keep running, so we warn about it and move forward.
sys.stderr.write('[b10-xfrin] failed to import DNS module: %s\n' % str(e))
+
+isc.utils.process.rename()
# If B10_FROM_BUILD is set in the environment, we use data files
# from a directory relative to that, otherwise we use the ones
Modified: trunk/src/bin/xfrout/xfrout.py.in
==============================================================================
--- trunk/src/bin/xfrout/xfrout.py.in (original)
+++ trunk/src/bin/xfrout/xfrout.py.in Tue Sep 28 11:01:19 2010
@@ -29,6 +29,7 @@
from isc.log.log import *
from isc.cc import SessionError, SessionTimeout
from isc.notify import notify_out
+import isc.utils.process
import socket
import select
import errno
@@ -40,6 +41,8 @@
# C++ loadable module may not be installed; even so the xfrout process
# must keep running, so we warn about it and move forward.
sys.stderr.write('[b10-xfrout] failed to import DNS or XFR module: %s\n' % str(e))
+
+isc.utils.process.rename()
if "B10_FROM_BUILD" in os.environ:
SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/xfrout"
Modified: trunk/src/bin/zonemgr/zonemgr.py.in
==============================================================================
--- trunk/src/bin/zonemgr/zonemgr.py.in (original)
+++ trunk/src/bin/zonemgr/zonemgr.py.in Tue Sep 28 11:01:19 2010
@@ -36,6 +36,9 @@
from isc.datasrc import sqlite3_ds
from optparse import OptionParser, OptionValueError
from isc.config.ccsession import *
+import isc.utils.process
+
+isc.utils.process.rename()
# If B10_FROM_BUILD is set in the environment, we use data files
# from a directory relative to that, otherwise we use the ones
Modified: trunk/src/lib/python/isc/Makefile.am
==============================================================================
--- trunk/src/lib/python/isc/Makefile.am (original)
+++ trunk/src/lib/python/isc/Makefile.am Tue Sep 28 11:01:19 2010
@@ -1,4 +1,4 @@
-SUBDIRS = datasrc cc config log notify # Util
+SUBDIRS = datasrc cc config log notify utils # Util
python_PYTHON = __init__.py
More information about the bind10-changes
mailing list