Rev 59: Simply Config classes definitions. in file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/

Vincent Ladeuil v.ladeuil+lp at free.fr
Tue Feb 24 20:47:05 GMT 2009


At file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/

------------------------------------------------------------
revno: 59
revision-id: v.ladeuil+lp at free.fr-20090224204704-tu83y5m3uoe91zrs
parent: v.ladeuil+lp at free.fr-20090223170014-nbevq5i7iv58ywsn
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: local_test_server
timestamp: Tue 2009-02-24 21:47:04 +0100
message:
  Simply Config classes definitions.
  
  * tests/test_config.py:
  (TestBaseConfig.test_ensure_required_dirs_exist): Update tests.
  
  * config.py:
  (Config.__init__): Slightly rework parameter handling to simplify
  daughter classes.
-------------- next part --------------
=== modified file 'config.py'
--- a/config.py	2009-02-23 11:27:14 +0000
+++ b/config.py	2009-02-24 20:47:04 +0000
@@ -37,24 +37,37 @@
 
 class Config(object):
 
-    def __init__(self, name, required_dirs=None, _base_dir=None):
+    # Daughter classes can define the following (a dict with the same
+    # definition as the _required_dirs parameter in __init__).
+    _required_dirs = None
+
+    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.
+
+        :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 _base_dir: An alternate base directory to use instead of the
-            default 'work'
+            default 'work' (Reserved for tests)
 
         Each server gets its own directory under the 'work/<server_name>'
         subdir of the plugin. This helps administration and debugging by
         grouping all server files in the same place.
         """
-        self.name = name
+        # name, _required_dirs and _base_dir parameters are mainly for tests,
+        # daughter classes just define class attributes.
+        if name is not None:
+            self.name = name
+        if _required_dirs is not None:
+            self._required_dirs = _required_dirs
         if _base_dir is None:
             _base_dir = get_lts_path('work/%s' % name)
+
         self.base_dir = _base_dir
-        self.values = dict(server_name=name,
+        self.values = dict(server_name=self.name,
                             # Will be updated at server creation
                            host='example.com' ,port=0,
                            )
@@ -62,8 +75,9 @@
         # the pidfile.
         self.required_dirs = dict(etc_dir='etc', var_run_dir='var/run',
                                   var_log_dir='var/log', data_dir='data')
-        if required_dirs is not None:
-            self.required_dirs.update(required_dirs)
+
+        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)
@@ -108,34 +122,24 @@
 class HttpConfig(Config):
     """Common base class for all http servers."""
 
-# FIXME: Couldn't the following be simplified by defining name and
-# required_dirs as class attributes ?
 
 class Apache2(HttpConfig):
 
+    name = 'apache2'
     _required_dirs = dict(var_lock_dir='var/lock')
 
-    def __init__(self, name=None, required_dirs=None, _base_dir=None):
-        if name is None:
-            name = 'apache2'
-        super(Apache2, self).__init__(
-            name, required_dirs=self._required_dirs, _base_dir=_base_dir)
-
 
 class Apache2DAV(Apache2):
 
-    def __init__(self, _base_dir=None):
-        super(Apache2DAV, self).__init__(
-            'apache2-dav',
-            required_dirs=self._required_dirs, _base_dir=_base_dir,)
+    name = 'apache2-dav'
 
 
 class Apache2HTTPS(Apache2):
 
+    name = 'apache2-https'
+
     def __init__(self, _base_dir=None):
-        super(Apache2HTTPS, self).__init__(
-            'apache2-https',
-            required_dirs=self._required_dirs, _base_dir=_base_dir,)
+        super(Apache2HTTPS, self).__init__(_base_dir=_base_dir,)
         crt = 'server.crt'
         key = 'server_without_pass.key'
         self.values['certificate_name'] = crt
@@ -146,60 +150,47 @@
 
 class Apache2SVN(Apache2):
 
+    name =  'apache2-svn'
+
     def __init__(self, _base_dir=None):
-        super(Apache2SVN, self).__init__(
-            'apache2-svn',
-            required_dirs=self._required_dirs, _base_dir=_base_dir)
-        self.values['svn_dir'] = self.abspath('svn')
+       self._required_dirs.update(svn_dir='svn')
+       super(Apache2SVN, self).__init__(_base_dir=_base_dir)
 
 
 class Apache2Kerberos(Apache2):
 
+    name =  'apache2-krb5'
     def __init__(self, _base_dir=None):
-        super(Apache2Kerberos, self).__init__(
-            'apache2-krb5',
-            required_dirs=self._required_dirs, _base_dir=_base_dir)
+        super(Apache2Kerberos, self).__init__( _base_dir=_base_dir)
         self.values['keytab'] = self.abspath('krb5.keytab')
 
 
 class Cherokee(HttpConfig):
 
-    def __init__(self, _base_dir=None):
-        super(Cherokee, self).__init__('cherokee', _base_dir=_base_dir)
+    name =  'cherokee'
 
 
 class Lighttpd(HttpConfig):
 
-    def __init__(self, name=None, _base_dir=None):
-        if name is None:
-            name = 'lighttpd'
-        super(Lighttpd, self).__init__(name, _base_dir=_base_dir)
+    name =  'lighttpd'
 
 
 class LighttpdDAV(Lighttpd):
 
-    def __init__(self, _base_dir=None):
-        super(LighttpdDAV, self).__init__('lighttpd-dav', _base_dir=_base_dir)
+    name =  'lighttpd-dav'
 
 
 class Vsftpd(Config):
 
-    def __init__(self, _base_dir=None):
-        super(Vsftpd, self).__init__('vsftpd', _base_dir=_base_dir)
+    name =  'vsftpd'
 
 
 class Proftpd(Config):
 
-    def __init__(self, _base_dir=None):
-        super(Proftpd, self).__init__('proftpd', _base_dir=_base_dir)
+    name =  'proftpd'
 
 
 class Muddleftpd(Config):
 
+    name =  'muddleftpd'
     _required_dirs = dict(var_lock_dir='var/lock')
-
-    def __init__(self, name=None, required_dirs=None, _base_dir=None):
-        if name is None:
-            name = 'muddleftpd'
-        super(Muddleftpd, self).__init__(
-            name, required_dirs=self._required_dirs, _base_dir=_base_dir)

=== modified file 'tests/test_config.py'
--- a/tests/test_config.py	2009-02-09 13:09:17 +0000
+++ b/tests/test_config.py	2009-02-24 20:47:04 +0000
@@ -72,7 +72,8 @@
 
     def test_ensure_required_dirs_exist(self):
         req_dirs = dict(bar='bar', baz='baz')
-        c = config.Config('foo', req_dirs, _base_dir=self.test_base_dir)
+        c = config.Config('foo', _required_dirs=req_dirs,
+                          _base_dir=self.test_base_dir)
         c.ensure_required_dirs_exist()
         self.failUnlessExists(self._abspath('bar'))
         self.failUnlessExists(self._abspath('baz'))



More information about the bazaar-commits mailing list