Query Templates#
Query Templates are appended to an incoming Squirro query. This functionality is typically used to implement access control logic.
Configuration#
To enable query templates, the /etc/squirro/topic.ini configuration is modified to contain a [query_templates] section:
[query_templates]
# Which projects should use a query template (space-separated)
project_ids = IgnLQDYqSta1dQUtOZh0xg I6JAxCjeRTWts8mwI3AA6A
# Where are the templates stored
directory = /etc/squirro/query_templates
Make sure, the specified directory exists. For reach project that was specified in the project_ids a template file with the tmpl extension should exists. In the example above, the following two templates are used on the disk:
/etc/squirro/query_templates/IgnLQDYqSta1dQUtOZh0xg.tmpl/etc/squirro/query_templates/I6JAxCjeRTWts8mwI3AA6A.tmpl
If a template doesn’t exist, even though the project is listed in the query templates project IDs, then all queries in that project will return an error.
Configuration Service#
As an alternative to storing templates on disk, the query template can be set per project via the configuration service using the topic.query-template configuration key. When a value is found in the configuration service for a given project, it takes precedence over the file-based template; otherwise, Squirro falls back to reading the template from disk as described above.
This is useful for managing query templates centrally without requiring filesystem access on the server.
Template#
The query template is written as a Jinja template. A number of arguments are provided to the template.
Parameter |
Description |
|
The original query, for which the user is requesting information. Deprecated as of Squirro 3.3.9. The template gets merged with an incoming query. |
|
The user ID of the user executing the query. |
|
The tenant domain of the current user. Tenant is the Squirro concept for running multiple organisations on the same Squirro cluster - used especially in the cloud environment. |
|
The user’s email address. |
|
The boolean flag indicating if the user has admin permissions. |
|
The project ID on which the query is executed. |
|
The name of the project on which the query is executed. |
|
The contents of the |
In addition, all values passed into the user_information dictionary in the extauth service are available as top level attributes.