Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Query Templates are appended to an incoming Squirro query. This functionality is typically used to implement access control logic.

Note

As of Squirro 3.3.9, Query Templates are appended to an incoming Squirro query. In older versions of Squirro, the templates modify the query string.

Table of Contents

Table of Contents
outlinetrue
excludeTable of Contents

Configuration

To enable query templates, the topic.ini configuration is modified to contain a [query_templates] section:

/etc/squirro/topic.ini (excerpt)
Code Block
languagetext
[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.

Template

The query template is written as a Jinja template. A number of arguments are provided to the template.

...

Parameter

...

Description

...

query

...

The original query, for which the user is requesting information.

Note

Deprecated as of Squirro 3.3.9. The template gets merged with an incoming query.

...

user

...

The user ID of the user executing the query.

...

tenant

...

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.

...

project_id

...

The project ID on which the query is executed.

...

project_title

...

The name of the project on which the query is executed.

...

external_request_params

...

The contents of the template_params dict in the query options. This can be used to pass in custom data into the query template from custom widgets.

In addition all values passed into the user_information dictionary in the extauth service are available as top level attributes.
See the example with the user_id and  group_id below.

Authorisation Example

A typical use case for query templates is to combine them with authorisation facets (see the auth option in the data loader facets). For example, a facet can be calculated or loaded, that flags each item with the user IDs that are allowed to see that item. In that case, the query template may look like this:

example.tmpl
Code Block
languagetext
user:{{user}}

In this example, the original query may be something like "salary", but this will be expanded by this template to (depending on the user ID) the larger query "salary AND user:WXt6zm_wSKqW3J8S-aDAwA" - thus ensuring, that only results are returned, where the user facet is set to the current user's identifier.

A more complex example would incorporate information from the user_info dictionary, which can be returned by the authorisation service.

example.tmpl

...

languagetext

...

This page can now be found at Query Templates on the Squirro Docs site.