Fix bug in map.jinja
Fix a bug in map.jinja where the filter_by for the metric_collector modified
the influxdb_defaults dict re-used for the remote_collector. The filter_by
function does deep merges, so some caution is required.
diff --git a/heka/map.jinja b/heka/map.jinja
index c7de276..e6d8a90 100644
--- a/heka/map.jinja
+++ b/heka/map.jinja
@@ -30,28 +30,39 @@
{%- endload %}
{%- set server = salt['grains.filter_by'](server_defaults, merge=salt['pillar.get']('heka:server')) %}
-{%- load_yaml as elasticsearch_defaults %}
-default:
- elasticsearch_port: 9200
-{%- endload %}
-{% set log_collector = salt['grains.filter_by'](elasticsearch_defaults, merge=salt['pillar.get']('heka:log_collector')) %}
+{% set default_elasticsearch_port = 9200 %}
+{% set default_influxdb_port = 8086 %}
+{% set default_influxdb_time_precision = 'ms' %}
+{% set default_influxdb_timeout = 5000 %}
+{% set default_aggregator_port = 5565 %}
-{%- load_yaml as influxdb_defaults %}
-default:
- influxdb_port: 8086
- influxdb_time_precision: ms
- influxdb_timeout: 5000
-{%- endload %}
+{% set log_collector = salt['grains.filter_by']({
+ 'default': {
+ 'elasticsearch_port': default_elasticsearch_port,
+ }
+}, merge=salt['pillar.get']('heka:log_collector')) %}
-{%- load_yaml as metric_collector_defaults %}
-default:
- aggregator_port: 5565
-{%- endload %}
-{% set metric_collector = salt['grains.filter_by'](
- metric_collector_defaults,
- merge=salt['grains.filter_by'](
- influxdb_defaults,
- merge=salt['pillar.get']('heka:metric_collector'))) %}
+{% set metric_collector = salt['grains.filter_by']({
+ 'default': {
+ 'influxdb_port': default_influxdb_port,
+ 'influxdb_time_precision': default_influxdb_time_precision,
+ 'influxdb_timeout': default_influxdb_timeout,
+ 'aggregator_port': default_aggregator_port,
+ }
+}, merge=salt['pillar.get']('heka:metric_collector')) %}
-{% set remote_collector = salt['grains.filter_by'](influxdb_defaults, merge=salt['pillar.get']('heka:remote_collector')) %}
-{% set aggregator = salt['grains.filter_by'](influxdb_defaults, merge=salt['pillar.get']('heka:aggregator')) %}
+{% set remote_collector = salt['grains.filter_by']({
+ 'default': {
+ 'influxdb_port': default_influxdb_port,
+ 'influxdb_time_precision': default_influxdb_time_precision,
+ 'influxdb_timeout': default_influxdb_timeout,
+ }
+}, merge=salt['pillar.get']('heka:remote_collector')) %}
+
+{% set aggregator = salt['grains.filter_by']({
+ 'default': {
+ 'influxdb_port': default_influxdb_port,
+ 'influxdb_time_precision': default_influxdb_time_precision,
+ 'influxdb_timeout': default_influxdb_timeout,
+ }
+}, merge=salt['pillar.get']('heka:aggregator')) %}