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