Rev 62: Tweak required dirs definitions. in file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Wed Feb 25 12:23:50 GMT 2009
At file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
------------------------------------------------------------
revno: 62
revision-id: v.ladeuil+lp at free.fr-20090225122349-pmbzis0scoqtf7bo
parent: v.ladeuil+lp at free.fr-20090225091049-qdirn3inkj44n3f0
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: local_test_server
timestamp: Wed 2009-02-25 13:23:49 +0100
message:
Tweak required dirs definitions.
* config.py:
(Config.__init__): All 'work' sub-directories are define in the
same way. Use a tuple instead of a dict so that daughter classes
can add required dires more easily and force the name.
-------------- next part --------------
=== modified file 'config.py'
--- a/config.py 2009-02-25 09:10:49 +0000
+++ b/config.py 2009-02-25 12:23:49 +0000
@@ -19,7 +19,7 @@
import errno
import getpass
import os
-
+import string
from bzrlib import (
osutils,
@@ -34,18 +34,23 @@
class Config(object):
- # Daughter classes can define the following (a dict with the same
- # definition as the _required_dirs parameter in __init__).
+ # Daughter classes can add to the following (same definition as the
+ # _required_dirs parameter in __init__).
_required_dirs = None
+ _required_dirs = ('etc', 'var/run', 'var/log', 'data')
+
+ _path2name = string.maketrans('/', '_')
def __init__(self, name=None, _required_dirs=None,_base_dir=None):
"""Constructor.
:param name: The name of the server, also used to build various dirs.
- :param _required_dirs: A dict where keys are the name to use in config
- files and values the path relative to server work
- directory. (Reserved for tests)
+ :param _required_dirs: A tuple of relative paths that should be created
+ under the server work directory and for which a value will be
+ created in the config dict (replacing '/' with '_' and adding
+ '_dir' suffix, aka var/run will defines var_log_dir) . (Reserved
+ for tests)
:param _base_dir: An alternate base directory to use instead of the
default 'work' (Reserved for tests)
@@ -64,25 +69,20 @@
_base_dir = get_lts_path('work/%s' % name)
self.base_dir = _base_dir
- self.values = dict(server_name=self.name,
- # Will be updated at server creation
- host='example.com' ,port=0,
- )
- # We need at least a place to put the generated configuration file and
- # the pidfile.
- self.required_dirs = dict(etc_dir='etc', var_run_dir='var/run',
- var_log_dir='var/log', data_dir='data')
-
- if self._required_dirs is not None:
- self.required_dirs.update(self._required_dirs)
-
- for name, relpath in self.required_dirs.items():
- self.values[name] = self.abspath(relpath)
-
- self.values['user'] = getpass.getuser()
+ self.values = dict()
+ self.required_dirs = []
+ for d in self._required_dirs:
+ name = d.translate(self._path2name) + '_dir'
+ self.required_dirs.append(name)
+ self.values[name] = self.abspath(d)
+
+ self.values['server_name'] = self.name
+ self.values['host'] = 'example.com' # Will be updated at server creation
+ self.values['port'] = 0 # Will be updated at server creation
self.values['base_dir'] = self.base_dir
self.values['pid_file'] = self.abspath('var/run/%s.pid' % self.name)
self.values['log_file'] = self.abspath('var/log/error.log')
+ self.values['user'] = getpass.getuser()
self.config_path = get_lts_path('configs/%s.conf' % self.name)
def abspath(self, relpath=None):
@@ -102,9 +102,9 @@
raise SyntaxError('At line %d Error: %s' % (line_num + 1, e))
def ensure_required_dirs_exist(self):
- for dir in self.required_dirs.keys():
+ for d in self.required_dirs:
try:
- os.makedirs(self.get_value(dir))
+ os.makedirs(self.get_value(d))
except OSError, e:
if e.errno == errno.EEXIST:
# Better ask for forgiveness
@@ -123,7 +123,7 @@
class Apache2(HttpConfig):
name = 'apache2'
- _required_dirs = dict(var_lock_dir='var/lock')
+ _required_dirs = HttpConfig._required_dirs + ('var/lock',)
class Apache2DAV(Apache2):
@@ -148,15 +148,13 @@
class Apache2SVN(Apache2):
name = 'apache2-svn'
-
- def __init__(self, _base_dir=None):
- self._required_dirs.update(svn_dir='svn')
- super(Apache2SVN, self).__init__(_base_dir=_base_dir)
+ _required_dirs = Apache2._required_dirs + ('svn',)
class Apache2Kerberos(Apache2):
name = 'apache2-krb5'
+
def __init__(self, _base_dir=None):
super(Apache2Kerberos, self).__init__( _base_dir=_base_dir)
self.values['keytab'] = self.abspath('krb5.keytab')
@@ -190,4 +188,8 @@
class Muddleftpd(Config):
name = 'muddleftpd'
- _required_dirs = dict(var_lock_dir='var/lock')
+ _required_dirs = Config._required_dirs + ('var/lock',)
+
+
+
+
More information about the bazaar-commits
mailing list