Description
Deployment Type
Self-hosted
NetBox Version
v4.0.9
Python Version
3.10
Steps to Reproduce
- Create the following template in a data store, as well as child templates in the blocks directory. In this example a template named interface.j2 is located in the blocks/TEST/ directory.
- Assign the template to a device
- Attempt to render the template
Example of template. This has been tested manually using Jinja2. The configuration blocks referenced are from a plugin.
config system interface
{% for config_block in device.site.configblock_set.all() %}
{% include "blocks/" + custom_block.name + "/interface.j2" %}
{% endfor %}
end
Expected Behavior
Expected behaviour is that the template renders and imports the relevant includes.
Observed Behavior
Traceback (most recent call last):
File "/opt/netbox/netbox/utilities/jinja2.py", line 26, in get_source
template_source = self._template_cache[template]
KeyError: 'blocks/TEST/interface.j2'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/netbox/netbox/dcim/views.py", line 2060, in get_extra_context
rendered_config = config_template.render(context=context_data)
File "/opt/netbox/netbox/extras/models/configs.py", line 282, in render
output = template.render(**_context)
File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 1304, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.10/site-packages/jinja2/environment.py", line 939, in handle_exception
raise rewrite_traceback_stack(source=source)
File "block-config.j2", line 49, in top-level template code
File "/opt/netbox/netbox/utilities/jinja2.py", line 28, in get_source
raise TemplateNotFound(template)
jinja2.exceptions.TemplateNotFound: blocks/TEST/interface.j2