4.4.7.1. From python objects¶
Warning
This API is deprecated.
Axonius API v2 is now available, we recommend you move to API v2.
New features will no longer be added to this API. Axonius will only provide bug fixes.
Parser for AQL queries and GUI expressions from python objects.
- class axonius_api_client.api.wizards.wizard.Wizard(apiobj, log_level='debug')[source]¶
Bases:
objectParser for AQL queries and GUI expressions from python objects.
Examples
Create a
clientusingaxonius_api_client.connect.Connectand assumeapiobjis eitherclient.devicesorclient.users>>> apiobj = client.devices # or client.users
Define some entries to parse
>>> entries = [ ... { ... 'value': 'hostname contains test', ... 'type': 'simple', ... }, ... { ... 'value': 'installed_software // name contains chrome // version earlier_than 82', ... 'type': 'complex' ... }, ... ]
Parse the entries into a query and GUI expressions
>>> parsed = apiobj.wizard.parse(entries=entries) >>> list(parsed) ['expressions', 'query']
Get the query produced by the wizard
>>> query = parsed["query"] >>> query[:80] '(specific_data.data.hostname == regex("test", "i")) and (specific_data.data.inst'
Get the GUI expressions produced by the wizard
>>> expressions = parsed["expressions"] >>> expressions[0]['filter'] '(specific_data.data.hostname == regex("test", "i"))' >>> expressions[1]['filter'][:80] 'and (specific_data.data.installed_software == match([(name == regex("chrome", "i'
Use the query to get assets
>>> assets = apiobj.get(query=query) >>> len(assets) 2
Use the query to get a count of assets >>> count = apiobj.count(query=query) >>> count 2
Use the query and expressions to create a saved query that the GUI understands
>>> sq = apiobj.saved_query.add(name="test", query=query, expressions=expressions)
-
DOCS:
str= '\n# Example:\n[\n {\n "type": "simple",\n "value": "( hostname contains test"\n },\n {\n "type": "simple",\n "value": "! hostname contains internal )"\n },\n {\n "type": "simple",\n "value": "( os.type equals windows"\n },\n {\n "type": "simple",\n "value": "| os.type equals os x )"\n },\n {\n "type": "complex",\n "value": "installed_software // name contains chrome // version earlier_than 82"\n }\n]\n\n\n# Format -- [] represents optional items:\n# "type": "simple, "value": "[& | ! ( )] FIELD OPERATOR VALUE [)]"\n# Description: "Filter entry for simple fields"\n# "type": "complex", "value": "[& | ! ( )] COMPLEX-FIELD // SUB-FIELD OPERATOR VALUE[ // ...] [)]"\n# Description: "Filter entry for complex fields and their sub-fields"\n\n# Flags:\n# & Use and instead of or (default)\n# | Use or instead of and (overrides &)\n# ! Use not\n# ( Open a parentheses\n# ) Close a parentheses (can also be at end of entry)\n'¶
- __init__(apiobj, log_level='debug')[source]¶
Query wizard builder.
- Parameters:
apiobj (
axonius_api_client.api.assets.asset_mixin.AssetMixin) – Asset objectlog_level (
typing.Union[str,int]) – logging level for this object
-
LOG:
logging.Logger¶ Logger for this object.
- APIOBJ¶
Asset object.
- PARSER¶
Value parser.
- parse(entries, source='list of dictionaries')[source]¶
Parse a list of entries into a query and the associated GUI query wizard expressions.
- Parameters:
entries (
typing.List[dict]) – list of entries to parsesource (
str) – where entries came from
- Return type:
- _parse_entries(entries, source)[source]¶
Parse a list of entries into a query and the associated GUI query wizard expressions.
- Parameters:
entries (
typing.List[dict]) – list of entries to parsesource (
str) – where entries came from
- Raises:
axonius_api_client.exceptions.WizardError – if an entry fails to be parsed
- Return type:
- _parse_exprs(entries)[source]¶
Parse a list of entries into GUI expressions.
- Parameters:
entries (
typing.List[dict]) – list of entries to parse- Raises:
axonius_api_client.exceptions.WizardError – if an entry fails to be parsed
- Return type:
- _parse_complex(entry, idx)[source]¶
Parse an entry of type complex into GUI expressions.
- Parameters:
- Raises:
axonius_api_client.exceptions.WizardError – if sub expr fails to parse
- Return type:
- _parse_sub(field, value_raw, idx)[source]¶
Parse sub expression of an entry of type complex.
- Parameters:
- Raises:
axonius_api_client.exceptions.WizardError – if sub-field supplied is not a valid sub-field of the complex field
- Return type:
- _split_flags(value_raw, flags=None)[source]¶
Parse an expression and get the flags from the beginning and end.
- Parameters:
value_raw (
str) – the value to get the flags fromflags (
typing.Optional[typing.List[str]]) – flags from the entry
- Raises:
axonius_api_client.exceptions.WizardError – if value is empty after removing flags
- Return type:
- _split_simple(value_raw)[source]¶
Split a simple query wizard expression into field, operator, and value.
- Parameters:
value_raw (
str) – the raw unparsed value to parse- Return type:
typing.Tuple[str,str,str]
- _split_complex(value_raw)[source]¶
Split a complex query wizard expression into field and sub-field expressions.
- Parameters:
value_raw (
str) – the raw unparsed value to parse- Return type:
- _get_operator(operator, field, value_raw)[source]¶
Validate the supplied operator for an expression for the type of field.
- Parameters:
- Return type:
- _get_field(value, value_raw)[source]¶
Find a field schema for the supplied field name.
- Parameters:
- Raises:
axonius_api_client.exceptions.WizardError – if field can not be found or is “all” field
- Return type:
- _get_field_complex(value, value_raw)[source]¶
Find a field schema for the supplied complex field name.
- Parameters:
- Raises:
axonius_api_client.exceptions.WizardError – if field can not be found, is not a complex field, or is “all” field
- Return type:
- _check_entry_type(etype, types)[source]¶
Check that a supplied entry type is valid.
- Parameters:
etype (
str) – entry type to checktypes (
typing.List[str]) – valid entry types to check etype against
- Raises:
axonius_api_client.exceptions.WizardError – if etype is not on of types
- Return type:
- _check_entry_keys(entry, keys)[source]¶
Check that an entry has the required keys.
- Parameters:
entry (
dict) – entry to check keys againstkeys (
typing.List[str]) – list of keys that entry must have
- Raises:
axonius_api_client.exceptions.WizardError – if key is not in entry, value is empty, or value is not a string
- Return type:
- _check_patterns(value_raw, value, src, patterns)[source]¶
Check that a value matches a list of regex patterns.
- Parameters:
value_raw (
str) – raw unparsed value where value came fromvalue (
str) – value to check patterns againstsrc (
str) – identifier of what value representspatterns (
typing.List[str]) – list of regex patterns to check value against
- Raises:
axonius_api_client.exceptions.WizardError – if value is empty or does not match one of the patterns
-
DOCS: