[Zope3-dev] Re: RFC: Use ConfigParser for High-Level Configuration
Philipp von Weitershausen
philipp at weitershausen.de
Sun Mar 5 12:17:09 EST 2006
Jim Fulton wrote:
> http://dev.zope.org/Zope3/UseConfigParserForHighLevelConfiguration
>
> Is a proposal for using ConfigParser, rather than ZConfig for high-level
> configuration.
+0
I see the advantages of using ConfigParser, especially being able to
configure more than one instance in an .ini file as well as the
interoperability with other software that uses them (e.g. paste.deploy).
At least the first point, however, doesn't require us to ditch ZConfig.
As you mention, a possible solution is to fix ZConfig's shortcomings
with respect to the centralized schema definition and the push-vs.-pull
issue.
Looking at your examples (especially the long one), I find the ZConfig
version much easier to read. Perhaps the .ini format could be compressed
more. It seems like one has to create a new section for every little
detail (but then again, you have to create a "tag" for every little in
detail in the ZConfig version too).
How about an .ini file like this:
[DEFAULT]
INSTANCE = /home/jim/sample_instance
CONFDIR = %(INSTANCE)s/etc
DATADIR = %(INSTANCE)s/var
LOGDIR = %(INSTANCE)s/log
[zope]
site-definition = %(INSTANCE)s/etc/site.zcml
interrupt-check-interval = 200
devmode = off
server = zope/server
zodb = zope/zodb
accesslog = zope/accesslog
eventlog = zope/eventlog
[zope/server]
server0/name = http0
server0/type = HTTP
server0/address = 8080
server1/name = http1
server1/type = HTTP
server1/address = 8081
server2/type = PostmortemDebuggingHTTP
server/2address = 8082
[zope/zodb]
zodb0/name = main
zodb0/type = filestorage
zodb0/path = %(DATADIR)s/Data.fs
zodb1/name = a
zodb1/type = filestorage
zodb1/path = %(DATADIR)s/A.fs
# example added by philiKON
zodb2/name = b
zodb2/type = directorystorage
zodb2/path = %(DATADIR)s/dirstorage
zodb2/readonly = off
[zope/accesslog]
log0/path = %(LOGDIR)s/access.log
log1/path = STDOUT
[zope/eventlog]
log0/path = %(LOGDIR)s/z3.log
log0/formatter = zope.exceptions.log.Formatter
log1/path = STDOUT
log1/formatter = zope.exceptions.log.Formatter
Basically, an instance section (e.g. [zope]) would only refer to four
other sections (server, zodb, accesslog, eventlog) which would not refer
to more subsections. Instead they use more complex keys. Of course, the
resulting data structures would no longer be compatible with ZConfig.
3rd party code like DirStorage (example added above) would have to be
adjusted. This could create a lot of BBB pain.
Anyways, just some ideas. I'm fairly neutral on the overall idea.
Philipp
More information about the Zope3-dev
mailing list