Grammar¶
Query grammar definition.
- class cumin.grammar.Backend(keyword, name, cls)¶
Bases:
tuple
collections.namedtuple()
that define a Backend object.- Keyword Arguments:
- cls¶
Alias for field number 2
- keyword¶
Alias for field number 0
- name¶
Alias for field number 1
- cumin.grammar.INTERNAL_BACKEND_PREFIX = 'cumin.backends'¶
str
with the prefix for built-in backends.
- cumin.grammar.get_registered_backends(external=())[source]¶
Get a mapping of all the registered backends with their keyword.
- Parameters:
external (list, tuple, optional) -- external backend modules to register.
- Returns:
A dictionary with a
{keyword: Backend object}
mapping for each available backend.- Return type:
- Raises:
cumin.CuminError -- If unable to register a backend.
- cumin.grammar.grammar(backend_keys)[source]¶
Define the main multi-query grammar.
Cumin provides a user-friendly generic query language that allows to combine the results of subqueries for multiple backends:
Each query part can be composed with the others using boolean operators
and
,or
,and not
,xor
.Multiple query parts can be grouped together with parentheses
(
,)
.Specific backend query
I{backend-specific query syntax}
, whereI
is an identifier for the specific backend.Alias replacement, according to aliases defined in the configuration file
A:group1
.The identifier
A
is reserved for the aliases replacement and cannot be used to identify a backend.A complex query example:
(D{host1 or host2} and (P{R:Class = Role::MyClass} and not A:group1)) or D{host3}
Backus-Naur form (BNF) of the grammar:
<grammar> ::= <item> | <item> <boolean> <grammar> <item> ::= <backend_query> | <alias> | "(" <grammar> ")" <backend_query> ::= <backend> "{" <query> "}" <alias> ::= A:<alias_name> <boolean> ::= "and not" | "and" | "xor" | "or"
Given that the pyparsing library defines the grammar in a BNF-like style, for the details of the tokens not specified above check directly the source code.
- Parameters:
backend_keys (list) -- list of the GRAMMAR_PREFIX for each registered backend.
- Returns:
the grammar parser.
- Return type: