userinfo: expose values as string
To be compatible with buildout (and not only slapos.recipe.template:jinja2
)
Running this buildout:
[buildout]
parts=x
[userinfo]
recipe = slapos.cookbook:userinfo
[x]
recipe = plone.recipe.command
command = echo "Hello user id ${userinfo:pw-uid}"
In a slapos patched buildout it outputs: "Hello user id !py!991"
(which means it's not usable for references directly in other buildout parts)
In a "non patched" buildout fail with error:
While:
Installing.
Getting section x.
Initializing section x.
Getting option x:command.
Getting section userinfo.
Initializing section userinfo.
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 2127, in main
getattr(buildout, command)(args)
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 681, in install
[self[part]['recipe'] for part in install_parts]
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1278, in __getitem__
options._initialize()
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1376, in _initialize
self._dosub(k, v)
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1431, in _dosub
v = '$$'.join([self._sub(s, seen) for s in v.split('$$')])
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1495, in _sub
v = self.buildout[section].get(option, None, seen)
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1278, in __getitem__
options._initialize()
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1386, in _initialize
self.initialize()
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1395, in initialize
self.recipe = recipe_class(buildout, name, self)
File "/tmp/x/eggs/slapos.cookbook-1.0.62-py2.7.egg/slapos/recipe/userinfo.py", line 13, in __init__
options['pw-uid'] = pinfo.pw_uid
File "/tmp/x/env/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1520, in __setitem__
raise TypeError('Option values must be strings', value)
TypeError: ('Option values must be strings', 991)