[Checkins] SVN: zc.recipe.deployment/trunk/ - add etc-prefix and var-prefix to specify locations of those trees
Fred Drake
cvs-admin at zope.org
Thu Mar 7 01:43:20 UTC 2013
Log message for revision 130054:
- add etc-prefix and var-prefix to specify locations of those trees
- consistently refuse to clobber the *-directory outputs
Changed:
U zc.recipe.deployment/trunk/CHANGES.txt
U zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
U zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt
-=-
Modified: zc.recipe.deployment/trunk/CHANGES.txt
===================================================================
--- zc.recipe.deployment/trunk/CHANGES.txt 2013-03-07 00:18:49 UTC (rev 130053)
+++ zc.recipe.deployment/trunk/CHANGES.txt 2013-03-07 01:43:20 UTC (rev 130054)
@@ -4,7 +4,17 @@
0.9.1 (unreleased)
==================
+- Absolutize paths generated based on ``prefix`` if ``prefix`` is
+ relative.
+- Add ``etc-prefix`` and ``var-prefix`` to specify new locations of
+ these entire trees; used instead of the previously untested ``etc``,
+ ``log`` and ``run`` settings.
+
+- Consistently refuse to clobber the *-directory outputs; join with
+ prefix if relative.
+
+
0.9.0 (2011-11-21)
==================
Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py 2013-03-07 00:18:49 UTC (rev 130053)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py 2013-03-07 01:43:20 UTC (rev 130054)
@@ -35,30 +35,37 @@
options['name'] = name
name = options['name']
-
- prefix = os.path.join('/', options.get('prefix', '/'))
+ prefix = os.path.join('/', options.get('prefix') or '/')
options['prefix'] = prefix
- options['run-directory'] = os.path.join(
- prefix, options.get('run', 'var/run'), name)
- options['log-directory'] = os.path.join(
- prefix, options.get('log', 'var/log'), name)
- options['etc-directory'] = os.path.join(
- prefix, options.get('etc', 'etc'), name)
- etc = os.path.join(prefix, options.get('etc', 'etc'))
- def directory(key, base, tail):
+ etc = os.path.join(
+ prefix, options.get('etc-prefix') or options.get('etc') or 'etc')
+
+ var = os.path.join(prefix, options.get('var-prefix') or 'var')
+ if options.get('var-prefix'):
+ log = os.path.join(var, "log")
+ run = os.path.join(var, "run")
+ else:
+ log = options.get('log') or 'var/log'
+ run = options.get('run') or 'var/run'
+
+ def directory(key, base, *tail):
key += '-directory'
setting = options.get(key)
if setting:
path = os.path.join(prefix, setting)
else:
- path = os.path.join(prefix, base, tail)
+ path = os.path.join(prefix, base, *tail)
options[key] = path
- directory("crontab", etc, "cron.d")
- directory("logrotate", etc, "logrotate.d")
- directory("rc", etc, "init.d")
+ directory('crontab', etc, 'cron.d')
+ directory('etc', etc, name)
+ directory('logrotate', etc, 'logrotate.d')
+ directory('rc', etc, 'init.d')
+ directory('log', log, name)
+ directory('run', run, name)
+
def install(self):
options = self.options
run_user = options['user']
Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt 2013-03-07 00:18:49 UTC (rev 130053)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt 2013-03-07 01:43:20 UTC (rev 130054)
@@ -2,6 +2,13 @@
Path computations
=================
+.. warning::
+
+ This document describes the behavior of the previously untested
+ settings ``etc``, ``log``, and ``run``. This is done to ensure we
+ don't break existing uses that do not use the newer ``etc-prefix``
+ and ``var-prefix`` settings, but the later are recommended.
+
>>> import pprint
>>> import zc.recipe.deployment
@@ -94,26 +101,28 @@
'rc-directory': '/usr/local/antsy/init.d',
'run-directory': '/usr/local/var/run/myapp'}
-The ``crontab-directory``, ``logrotate-directory`` and ``rc-directory``
-settings can be specified directly, and override thei computations
-entirely:
+Output options ending in '-directory' can be specified directly; these
+values will be retained instead of being clobbered by computed values:
>>> compute({"crontab-directory": "/my-crontabs",
... "etc": "antsy",
+ ... "etc-directory": "/apps/config",
... "log": "var/someplace",
+ ... "log-directory": "/big-disk/full-of-logs",
... "logrotate-directory": "/my-logrotations",
... "prefix": "/usr/local",
- ... "rc-directory": "/my-rcs"})
+ ... "rc-directory": "/my-rcs",
+ ... "run-directory": "/variable/run-away"})
{'crontab-directory': '/my-crontabs',
'etc': 'antsy',
- 'etc-directory': '/usr/local/antsy/myapp',
+ 'etc-directory': '/apps/config',
'log': 'var/someplace',
- 'log-directory': '/usr/local/var/someplace/myapp',
+ 'log-directory': '/big-disk/full-of-logs',
'logrotate-directory': '/my-logrotations',
'name': 'myapp',
'prefix': '/usr/local',
'rc-directory': '/my-rcs',
- 'run-directory': '/usr/local/var/run/myapp'}
+ 'run-directory': '/variable/run-away'}
Paths are absolute
@@ -148,3 +157,93 @@
'prefix': '/my/prefix',
'rc-directory': '/my/prefix/my-rcs',
'run-directory': '/my/prefix/var/run/myapp'}
+
+
+Specifying sub-tree prefixes
+----------------------------
+
+Two distinct sub-trees are supported: the 'etc' tree and the 'var'
+tree. These can be located in the directory hierarchy using the
+``etc-prefix`` and ``var-prefix`` settings.
+
+ >>> compute({"etc-prefix": "/config"})
+ {'crontab-directory': '/config/cron.d',
+ 'etc-directory': '/config/myapp',
+ 'etc-prefix': '/config',
+ 'log-directory': '/var/log/myapp',
+ 'logrotate-directory': '/config/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/',
+ 'rc-directory': '/config/init.d',
+ 'run-directory': '/var/run/myapp'}
+
+ >>> compute({"var-prefix": "/giant-disk"})
+ {'crontab-directory': '/etc/cron.d',
+ 'etc-directory': '/etc/myapp',
+ 'log-directory': '/giant-disk/log/myapp',
+ 'logrotate-directory': '/etc/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/',
+ 'rc-directory': '/etc/init.d',
+ 'run-directory': '/giant-disk/run/myapp',
+ 'var-prefix': '/giant-disk'}
+
+These will be combined with the prefix if they are relative:
+
+ >>> compute({"etc-prefix": "config",
+ ... "prefix": "/alt"})
+ {'crontab-directory': '/alt/config/cron.d',
+ 'etc-directory': '/alt/config/myapp',
+ 'etc-prefix': 'config',
+ 'log-directory': '/alt/var/log/myapp',
+ 'logrotate-directory': '/alt/config/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/alt',
+ 'rc-directory': '/alt/config/init.d',
+ 'run-directory': '/alt/var/run/myapp'}
+
+ >>> compute({"var-prefix": "giant-disk",
+ ... "prefix": "/alt"})
+ {'crontab-directory': '/alt/etc/cron.d',
+ 'etc-directory': '/alt/etc/myapp',
+ 'log-directory': '/alt/giant-disk/log/myapp',
+ 'logrotate-directory': '/alt/etc/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/alt',
+ 'rc-directory': '/alt/etc/init.d',
+ 'run-directory': '/alt/giant-disk/run/myapp',
+ 'var-prefix': 'giant-disk'}
+
+If ``etc-prefix`` and the (legacy) ``etc`` setting are both provided,
+``etc-prefix`` wins:
+
+ >>> compute({"etc": "/old",
+ ... "etc-prefix": "/config"})
+ {'crontab-directory': '/config/cron.d',
+ 'etc': '/old',
+ 'etc-directory': '/config/myapp',
+ 'etc-prefix': '/config',
+ 'log-directory': '/var/log/myapp',
+ 'logrotate-directory': '/config/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/',
+ 'rc-directory': '/config/init.d',
+ 'run-directory': '/var/run/myapp'}
+
+If ``var-prefix`` is used in conjunction with the (legacy) ``log`` and
+``run`` settings, ``var-prefix`` wins:
+
+ >>> compute({"log": "/log/someplace",
+ ... "run": "/run/someplace",
+ ... "var-prefix": "/big-disk"})
+ {'crontab-directory': '/etc/cron.d',
+ 'etc-directory': '/etc/myapp',
+ 'log': '/log/someplace',
+ 'log-directory': '/big-disk/log/myapp',
+ 'logrotate-directory': '/etc/logrotate.d',
+ 'name': 'myapp',
+ 'prefix': '/',
+ 'rc-directory': '/etc/init.d',
+ 'run': '/run/someplace',
+ 'run-directory': '/big-disk/run/myapp',
+ 'var-prefix': '/big-disk'}
More information about the checkins
mailing list