Code review comment for ~xnox/cloud-init:cidr

Revision history for this message
Scott Moser (smoser) wrote :

I just re-built this at
 https://jenkins.ubuntu.com/server/job/cloud-init-ci/366/
and the i386 ran fine. obviously it wasn't a problem with Dimitri's code that triggered it.

It feels like a bug in cheetah or python. :(.

I've put the following diff in place:
diff --git a/cloudinit/templater.py b/cloudinit/templater.py
index b3ea64e..c24265a 100644
--- a/cloudinit/templater.py
+++ b/cloudinit/templater.py
@@ -76,6 +76,8 @@ def basic_render(content, params):
 def detect_template(text):

     def cheetah_render(content, params):
+ print("Calling CTemplate(%r, searchList=[%r]).respond()" %
+ (content, params))
         return CTemplate(content, searchList=[params]).respond()

     def jinja_render(content, params):

And then run the failing test case like:
 tox-venv py27 nosetests --nocapture -v tests/unittests/test_handler/test_handl
er_apt_source_v3.py:TestAptSourceConfig.test_apt_v3_disable_suites

It shows:
test_disable_suites - disable_suites with many configurations ... Calling CTemplate('$RELEASE', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-security', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-security', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-security', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('foobar', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('foobar', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-updates', searchList=[{'RELEASE': 'xenial'}]).respond()
Calling CTemplate('$RELEASE-security', searchList=[{'RELEASE': 'xenial'}]).respond()

This is pretty straight forward usage of cheetah, the CTemplate is just
 from Cheetah.Template import Template as CTemplate

I've also tried calling CTemplate with None in either or both positions and you end up with a different stack trace than above. All of this on both trusty and xenial i386.

I was running in lxc where as c-i runs in a vm.

« Back to merge proposal