[svn] commit: r2325 - in /trunk: ChangeLog src/bin/auth/auth_srv.cc src/bin/xfrin/xfrin.py.in src/bin/xfrout/tests/xfrout_test.py src/bin/xfrout/xfrout.py.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Jun 29 14:13:40 UTC 2010
Author: jelte
Date: Tue Jun 29 14:13:40 2010
New Revision: 2325
Log:
merge of ticket #225 (b10-auth fails if ran from source tree), also changes xfrin and xfrout to use the database_file setting from the auth module, so for xfrin you don't need to specify it on the command, and for out it doesn't need its own configuration value
Modified:
trunk/ChangeLog
trunk/src/bin/auth/auth_srv.cc
trunk/src/bin/xfrin/xfrin.py.in
trunk/src/bin/xfrout/tests/xfrout_test.py
trunk/src/bin/xfrout/xfrout.py.in
Modified: trunk/ChangeLog
==============================================================================
--- trunk/ChangeLog (original)
+++ trunk/ChangeLog Tue Jun 29 14:13:40 2010
@@ -1,3 +1,12 @@
+
+ 62. [func] jelte
+ bin/xfrin: Use the database_file as configured in Auth to transfers
+ bin/xfrout: Use the database_file as configured in Auth to transfers
+
+ 61. [bug] jelte
+ bin/auth: Enable b10-auth to be launched in source tree
+ (i.e. use a zone database file relative to that)
+
60. [build] jinmei
Supported SunStudio C++ compiler. Note: gtest still doesn't work.
(Trac #251, svn r2310)
Modified: trunk/src/bin/auth/auth_srv.cc
==============================================================================
--- trunk/src/bin/auth/auth_srv.cc (original)
+++ trunk/src/bin/auth/auth_srv.cc Tue Jun 29 14:13:40 2010
@@ -274,9 +274,22 @@
bool is_default;
string item("database_file");
ElementPtr value = cs_->getValue(is_default, item);
+ final = Element::createFromString("{}");
+
+ // If the value is the default, and we are running from
+ // a specific directory ('from build'), we need to use
+ // a different value than the default (which may not exist)
+ // (btw, this should not be done here in the end, i think
+ // the from-source script should have a check for this,
+ // but for that we need offline access to config, so for
+ // now this is a decent solution)
+ if (is_default && getenv("B10_FROM_BUILD")) {
+ value = Element::create(string(getenv("B10_FROM_BUILD")) +
+ "/bind10_zones.sqlite3");
+ }
+ final->set(item, value);
+
db_file_ = value->stringValue();
- final = Element::createFromString("{}");
- final->set(item, value);
} else {
return (answer);
}
Modified: trunk/src/bin/xfrin/xfrin.py.in
==============================================================================
--- trunk/src/bin/xfrin/xfrin.py.in (original)
+++ trunk/src/bin/xfrin/xfrin.py.in Tue Jun 29 14:13:40 2010
@@ -40,11 +40,14 @@
# installed on the system
if "B10_FROM_BUILD" in os.environ:
SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/xfrin"
+ AUTH_SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/auth"
else:
PREFIX = "@prefix@"
DATAROOTDIR = "@datarootdir@"
SPECFILE_PATH = "@datadir@/@PACKAGE@".replace("${datarootdir}", DATAROOTDIR).replace("${prefix}", PREFIX)
+ AUTH_SPECFILE_PATH = SPECFILE_PATH
SPECFILE_LOCATION = SPECFILE_PATH + "/xfrin.spec"
+AUTH_SPECFILE_LOCATION = AUTH_SPECFILE_PATH + "/auth.spec"
__version__ = 'BIND10'
@@ -441,7 +444,18 @@
db_file = args.get('db_file')
if not db_file:
#TODO, the db file path should be got in auth server's configuration
- db_file = '@@LOCALSTATEDIR@@/@PACKAGE@/zone.sqlite3'
+ # if we need access to this configuration more often, we
+ # should add it on start, and not remove it here
+ # (or, if we have writable ds, we might not need this in
+ # the first place)
+ self._cc.add_remote_config(AUTH_SPECFILE_LOCATION)
+ db_file, is_default = self._cc.get_remote_config_value("Auth", "database_file")
+ if is_default and "B10_FROM_BUILD" in os.environ:
+ # this too should be unnecessary, but currently the
+ # 'from build' override isn't stored in the config
+ # (and we don't have writable datasources yet)
+ db_file = os.environ["B10_FROM_BUILD"] + os.sep + "bind10_zones.sqlite3"
+ self._cc.remove_remote_config(AUTH_SPECFILE_LOCATION)
return (zone_name, master_addrinfo, db_file)
Modified: trunk/src/bin/xfrout/tests/xfrout_test.py
==============================================================================
--- trunk/src/bin/xfrout/tests/xfrout_test.py (original)
+++ trunk/src/bin/xfrout/tests/xfrout_test.py Tue Jun 29 14:13:40 2010
@@ -242,22 +242,32 @@
self.xfrsess.server._shutdown_event.set()
self.assertRaises(XfroutException, self.xfrsess._reply_xfrout_query, self.getmsg(), self.sock, "example.com.")
+class MyCCSession():
+ def __init__(self):
+ pass
+
+ def get_remote_config_value(self, module_name, identifier):
+ if module_name == "Auth" and identifier == "database_file":
+ return "initdb.file", False
+ else:
+ return "unknown", False
+
+
class MyUnixSockServer(UnixSockServer):
def __init__(self):
self._lock = threading.Lock()
self._transfers_counter = 0
self._shutdown_event = threading.Event()
- self._db_file = "initdb.file"
self._max_transfers_out = 10
+ self._cc = MyCCSession()
class TestUnixSockServer(unittest.TestCase):
def setUp(self):
self.unix = MyUnixSockServer()
def test_updata_config_data(self):
- self.unix.update_config_data({'transfers_out':10, 'db_file':"db.file"})
+ self.unix.update_config_data({'transfers_out':10 })
self.assertEqual(self.unix._max_transfers_out, 10)
- self.assertEqual(self.unix._db_file, "db.file")
def test_get_db_file(self):
self.assertEqual(self.unix.get_db_file(), "initdb.file")
Modified: trunk/src/bin/xfrout/xfrout.py.in
==============================================================================
--- trunk/src/bin/xfrout/xfrout.py.in (original)
+++ trunk/src/bin/xfrout/xfrout.py.in Tue Jun 29 14:13:40 2010
@@ -41,14 +41,17 @@
if "B10_FROM_BUILD" in os.environ:
SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/xfrout"
+ AUTH_SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/auth"
UNIX_SOCKET_FILE= os.environ["B10_FROM_BUILD"] + "/auth_xfrout_conn"
else:
PREFIX = "@prefix@"
DATAROOTDIR = "@datarootdir@"
SPECFILE_PATH = "@datadir@/@PACKAGE@".replace("${datarootdir}", DATAROOTDIR).replace("${prefix}", PREFIX)
+ AUTH_SPECFILE_PATH = SPECFILE_PATH
UNIX_SOCKET_FILE = "@@LOCALSTATEDIR@@/auth_xfrout_conn"
SPECFILE_LOCATION = SPECFILE_PATH + "/xfrout.spec"
+AUTH_SPECFILE_LOCATION = AUTH_SPECFILE_PATH + os.sep + "auth.spec"
MAX_TRANSFERS_OUT = 10
verbose_mode = False
@@ -285,7 +288,7 @@
class UnixSockServer(ThreadingUnixStreamServer):
'''The unix domain socket server which accept xfr query sent from auth server.'''
- def __init__(self, sock_file, handle_class, shutdown_event, config_data):
+ def __init__(self, sock_file, handle_class, shutdown_event, config_data, cc):
self._remove_unused_sock_file(sock_file)
self._sock_file = sock_file
ThreadingUnixStreamServer.__init__(self, sock_file, handle_class)
@@ -293,6 +296,7 @@
self._transfers_counter = 0
self._shutdown_event = shutdown_event
self.update_config_data(config_data)
+ self._cc = cc
def _remove_unused_sock_file(self, sock_file):
'''Try to remove the socket file. If the file is being used
@@ -334,17 +338,19 @@
def update_config_data(self, new_config):
'''Apply the new config setting of xfrout module. '''
-
self._lock.acquire()
self._max_transfers_out = new_config.get('transfers_out')
- self._db_file = new_config.get('db_file')
self._lock.release()
def get_db_file(self):
- self._lock.acquire()
- file = self._db_file
- self._lock.release()
+ file, is_default = self._cc.get_remote_config_value("Auth", "database_file")
+ # this too should be unnecessary, but currently the
+ # 'from build' override isn't stored in the config
+ # (and we don't have indirect python access to datasources yet)
+ if is_default and "B10_FROM_BUILD" in os.environ:
+ file = os.environ["B10_FROM_BUILD"] + os.sep + "bind10_zones.sqlite3"
return file
+
def increase_transfers_counter(self):
'''Return False, if counter + 1 > max_transfers_out, or else
@@ -388,16 +394,16 @@
self._listen_sock_file = UNIX_SOCKET_FILE
self._shutdown_event = threading.Event()
self._cc = isc.config.ModuleCCSession(SPECFILE_LOCATION, self.config_handler, self.command_handler)
+ self._cc.add_remote_config(AUTH_SPECFILE_LOCATION);
self._config_data = self._cc.get_full_config()
self._cc.start()
self._start_xfr_query_listener()
-
def _start_xfr_query_listener(self):
'''Start a new thread to accept xfr query. '''
self._unix_socket_server = UnixSockServer(self._listen_sock_file, XfroutSession,
- self._shutdown_event, self._config_data);
+ self._shutdown_event, self._config_data, self._cc);
listener = threading.Thread(target = listen_on_xfr_query, args = (self._unix_socket_server,))
listener.start()
More information about the bind10-changes
mailing list