FEATURE: add custom ad-hoc queries for schedulled run, etc
Change-Id: Idabbb59c74a6ca004629c8f33e92c96d2d35c113
diff --git a/README.rst b/README.rst
index 75ffe55..854da83 100644
--- a/README.rst
+++ b/README.rst
@@ -273,10 +273,40 @@
client:
database:
mydb1:
- continuos_query:
+ continuous_query:
cq_avg_bus_passengers: >-
SELECT mean("passengers") INTO "transportation"."three_weeks"."average_passengers" FROM "bus_data" GROUP BY time(1h)
+Prunning data and data management:
+
+Intended to use in scheduled jobs, executed to maintain data life cycle above retention policy. These states are executed by
+``query.sls`` and you are expected to trigger ``sls_id`` individually.
+
+.. code-block:: yaml
+
+ influxdb:
+ client:
+ database:
+ mydb1:
+ query:
+ drop_measurement_h2o: >-
+ DROP MEASUREMENT h2o_quality
+ drop_shard_h2o: >-
+ DROP SHARD h2o_quality
+ drop_series_h2o_feet: >-
+ DROP SERIES FROM "h2o_feet"
+ drop_series_h2o_feet_loc_smonica: >-
+ DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
+ delete_h2o_quality_rt3: >-
+ DELETE FROM "h2o_quality" WHERE "randtag" = '3'
+ delete_h2o_quality: >-
+ DELETE FROM "h2o_quality"
+
+
+.. code-block:: shell
+
+ salt \* state.sls_id influxdb_query_delete_h2o_quality influxdb.query
+
InfluxDB relay with HTTP outputs:
diff --git a/influxdb/query.sls b/influxdb/query.sls
new file mode 100644
index 0000000..a24e2fa
--- /dev/null
+++ b/influxdb/query.sls
@@ -0,0 +1,34 @@
+{%- from "influxdb/map.jinja" import client with context %}
+
+{%- if client.get('enabled') %}
+{# CUSTOM QUERIES, intended to be called by salt_id #}
+
+{%- set mconf = pillar.salt.minion.get('config', {}).get('influxdb') %}
+
+{%- for db_name,db in client.get('database', {}).iteritems() %}
+{%- set db_name = db.get('name', db_name) %}
+{%- for qr_name,qr in db.get('query', {}).iteritems() %}
+
+{%- if qr is string %}
+{%- set query = { 'query': qr } %}
+{%- endif %}
+
+influxdb_query_{{ db_name }}_{{ qr_name }}:
+ module.run:
+ influxdb.query:
+ - database: {{ db_name }}
+ - query: {{ query }}
+ {%- if grains.saltversion >= "2017.7" %}
+ - client_args:
+ host: {{ mconf.host }}
+ port: {{ mconf.port }}
+ {%- if qr.user is defined OR mconf.password is defined %}
+ user: {{ qr.get('user', mconf.user) }}
+ {%- endif %}
+ {%- if qr.password is defined OR mconf.password is defined %}
+ password: {{ qr.get('password', mconf.password) }}
+ {%- endif %}
+ {%- endif %}
+{%- endfor %}
+{%- endfor %}
+
diff --git a/tests/pillar/client.sls b/tests/pillar/client.sls
index 6a38619..d352076 100644
--- a/tests/pillar/client.sls
+++ b/tests/pillar/client.sls
@@ -30,6 +30,13 @@
SELECT mean("passengers") INTO "transportation"."rp_db1"."average_passengers" FROM "_data" GROUP BY time(1h)
cq_basic_br: ->
SELECT mean(*) INTO "downsampled_transportation"."autogen".:MEASUREMENT FROM /.*/ GROUP BY time(30m),*
+ query:
+ insert_h2o_dummy: >-
+ INSERT cpu,host=dummyA value=10
+ delete_h2o_dummy:
+ query: DELETE FROM "h2o_quality"
+ user: admin
+ password: foobar
mydb2:
enabled: true
name: mydb2