Ah! Narrowing it down, the problem is actually with the ConfigParser module . . . I have a supervisor config that has the line:
environment: PATH='/usr/java/jdk1.8.0_11/bin:%(ENV_PATH)s'
and ConfigParser chokes whenever it tries to process that line:
>>> from ConfigParser import SafeConfigParser
>>> c = SafeConfigParser()
>>> c.read('/etc/supervisor.d/sidecar-data')
['/etc/supervisor.d/sidecar-data']
>>> c.sections()
['program:sidecar-data']
>>> c.items('program:sidecar-data')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/ConfigParser.py", line 578, in items
for option in options]
File "/usr/lib64/python2.6/ConfigParser.py", line 614, in _interpolate
self._interpolate_some(option, L, rawval, section, vars, 1)
File "/usr/lib64/python2.6/ConfigParser.py", line 646, in _interpolate_some
option, section, rest, var)
ConfigParser.InterpolationMissingOptionError: Bad value substitution:
section: [program:sidecar-data]