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