Commit b56fc3f0 authored by Guido van Rossum's avatar Guido van Rossum

Move the ZEO parameters into a <zeo> section.

parent ead3ccff
......@@ -120,14 +120,18 @@ class Options:
"""
self.load_configuration()
def load_schema(self):
here = os.path.dirname(ZEO.__file__)
schemafile = os.path.join(here, "schema.xml")
self.schema = ZConfig.loadSchema(schemafile)
def load_configuration(self):
if not self.configuration:
return
here = os.path.dirname(ZEO.__file__)
schemafile = os.path.join(here, "schema.xml")
schema = ZConfig.loadSchema(schemafile)
self.load_schema()
try:
self.rootconf = ZConfig.loadConfig(schema, self.configuration)[0]
self.rootconf, nil = ZConfig.loadConfig(self.schema,
self.configuration)
except ZConfig.ConfigurationError, errobj:
self.usage(str(errobj))
......@@ -253,12 +257,12 @@ class ZEOOptions(Options):
def load_zeoconf(self):
# Get some option values from the configuration
if self.family is None:
self.family = self.rootconf.address.family
self.address = self.rootconf.address.address
self.family = self.rootconf.zeo.address.family
self.address = self.rootconf.zeo.address.address
self.read_only = self.rootconf.read_only
self.transaction_timeout = self.rootconf.transaction_timeout
self.invalidation_queue_size = 100
self.read_only = self.rootconf.zeo.read_only
self.transaction_timeout = self.rootconf.zeo.transaction_timeout
self.invalidation_queue_size = self.rootconf.zeo.invalidation_queue_size
def load_logconf(self):
# Get logging options from conf, unless overridden by environment
......
<schema type="ZEO">
<schema>
<!-- XXX This schema still needs logging support. -->
......@@ -10,53 +10,59 @@
<!-- Use the storage types defined by ZODB. -->
<import src="../ZODB/config.xml"/>
<key name="address" datatype="socket-address"
required="yes">
<description>
The address at which the server should listen. This can be in
the form 'host:port' to signify a TCP/IP connection or a
pathname string to signify a Unix domain socket connection (at
least one '/' is required). A hostname may be a DNS name or a
dotted IP address. If the hostname is omitted, the platform's
default behavior is used when binding the listening socket (''
is passed to socket.bind() as the hostname portion of the
address).
</description>
</key>
<sectiontype name="zeo">
<key name="read-only" datatype="boolean"
required="no"
default="false">
<description>
Flag indicating whether the server should operate in read-only
mode. Defaults to false. Note that even if the server is
operating in writable mode, individual storages may still be
read-only. But if the server is in read-only mode, no write
operations are allowed, even if the storages are writable. Note
that pack() is considered a read-only operation.
</description>
</key>
<key name="address" datatype="socket-address"
required="yes">
<description>
The address at which the server should listen. This can be in
the form 'host:port' to signify a TCP/IP connection or a
pathname string to signify a Unix domain socket connection (at
least one '/' is required). A hostname may be a DNS name or a
dotted IP address. If the hostname is omitted, the platform's
default behavior is used when binding the listening socket (''
is passed to socket.bind() as the hostname portion of the
address).
</description>
</key>
<key name="invalidation-queue-size" datatype="integer"
required="no"
default="100">
<description>
The storage server keeps a queue of the objects modified by the
last N transactions, where N == invalidation_queue_size. This
queue is used to speed client cache verification when a client
disconnects for a short period of time.
</description>
</key>
<key name="read-only" datatype="boolean"
required="no"
default="false">
<description>
Flag indicating whether the server should operate in read-only
mode. Defaults to false. Note that even if the server is
operating in writable mode, individual storages may still be
read-only. But if the server is in read-only mode, no write
operations are allowed, even if the storages are writable. Note
that pack() is considered a read-only operation.
</description>
</key>
<key name="transaction-timeout" datatype="integer"
required="no">
<description>
The maximum amount of time to wait for a transaction to commit
after acquiring the storage lock, specified in seconds. If the
transaction takes too long, the client connection will be closed
and the transaction aborted.
</description>
</key>
<key name="invalidation-queue-size" datatype="integer"
required="no"
default="100">
<description>
The storage server keeps a queue of the objects modified by the
last N transactions, where N == invalidation_queue_size. This
queue is used to speed client cache verification when a client
disconnects for a short period of time.
</description>
</key>
<key name="transaction-timeout" datatype="integer"
required="no">
<description>
The maximum amount of time to wait for a transaction to commit
after acquiring the storage lock, specified in seconds. If the
transaction takes too long, the client connection will be closed
and the transaction aborted.
</description>
</key>
</sectiontype>
<section type="zeo" name="*" required="yes" attribute="zeo" />
<key name="monitor-address" datatype="socket-address" required="no">
<description>
......
......@@ -81,7 +81,9 @@ class TestZEOOptions(TestOptions):
output_args = []
configdata = """
address 5555
<zeo>
address 5555
</zeo>
<filestorage fs>
path Data.fs
</filestorage>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment