saltstack/salt
Voir sur GitHubProblem of the fun dictionary value being overwritten
Open
#56 297 ouverte le 3 mars 2020
Reactorbuggood first issueseverity-high
Métriques du dépôt
- Stars
- (13 710 stars)
- Métriques de merge PR
- (Merge moyen 72j 6h) (221 PRs mergées en 30 j)
Description
Description of Issue
Problem of automatic overwritting the set value to the dictionary, when using reactor to post an event on a queue.
Setup
(Please provide relevant configs and/or SLS files (Be sure to remove sensitive info).) reactor.conf
reactor:
- 'salt/beacon/*/iptables/exceeded':
- salt://reactors/schedule_queue.sls
schedule_queue.sls
{%- set split_tag = tag.split('/') -%}
{%- set orch_fun = split_tag[-2::1]|join('.') -%}
{%- set queue = split_tag[-2::1]|join('_') -%}
invoke_queue_scheduler:
runner.queue.insert_runner:
- fun: state.orchestrate
- kwargs:
mods: orch.{{ orch_fun }}
pillar:
id: {{ data['id'] }}
- queue: {{ queue }}
- backend: pgjsonb
Steps to Reproduce Issue
- Configure schedule_queue.sls on reactors folder
- Configure the reactor.conf
- Trigger the reactor from a minion with the following code:
salt-call event.send tag='salt/beacon/*/iptables/exceeded'
(Include debug logs if possible and relevant.) The salt renders and uses the correct information
[PROFILE ] Time (in seconds) to render '/var/cache/salt/master/files/base/reactors/schedule_queue.sls' using 'jinja' renderer: 0.06471872329711914
[DEBUG ] Rendered data from file: /var/cache/salt/master/files/base/reactors/schedule_queue.sls:
invoke_queue_scheduler:
runner.queue.insert_runner:
- fun: state.orchestrate
- kwargs:
mods: orch.iptables.exceeded
pillar:
id: mesos2.host.intranet
- queue: iptables_exceeded
- backend: pgjsonb
[DEBUG ] Results of YAML rendering:
OrderedDict([('invoke_queue_scheduler', OrderedDict([('runner.queue.insert_runner', [OrderedDict([('fun', 'state.orchestrate')]), OrderedDict([('kwargs', OrderedDict([('mods', 'orch.iptables.exceeded'), (
'pillar', OrderedDict([('id', 'mesos2.host.intranet')]))]))]), OrderedDict([('queue', 'iptables_exceeded')]), OrderedDict([('backend', 'pgjsonb')])])]))])
[PROFILE ] Time (in seconds) to render '/var/cache/salt/master/files/base/reactors/schedule_queue.sls' using 'yaml' renderer: 0.0008614063262939453
But when sending the data he sets runner.queue.insert_runner instead of iptables_exceeded
[DEBUG ] Sending event: tag = salt/run/20200303165210089774/new; data = {'fun': 'runner.queue.insert_runner', 'jid': '20200303165210089774', 'user': 'Reactor', 'fun_args': ['queue.insert_runner', {'back
end': 'pgjsonb', 'queue': 'iptables_exceeded', 'kwargs': OrderedDict([('mods', 'orch.iptables.exceeded'), ('pillar', OrderedDict([('id', 'mesos2.host.intranet')]))]), 'args': None}], '_stamp': '2020-03-03
T16:52:10.092216'}
[DEBUG ] LazyLoaded pgjsonb.insert
[DEBUG ] SQL Query: select relname from pg_class where relkind='r' and relname !~ '^(pg_|sql_)';
[DEBUG ] Queue iptables_exceeded already exists.
[DEBUG ] SQL Query: INSERT INTO iptables_exceeded(data) VALUES('{"fun": "queue.insert_runner", "args": [], "kwargs": {"mods": "orch.iptables.exceeded", "pillar": {"id": "mesos2.host.intranet"}}}')
[DEBUG ] LazyLoaded local_cache.prep_jid
[DEBUG ] Sending event: tag = salt/run/20200303165210089774/ret; data = {'fun': 'runner.queue.insert_runner', 'jid': '20200303165210089774', 'user': 'Reactor', 'fun_args': ['queue.insert_runner', {'back
end': 'pgjsonb', 'queue': 'iptables_exceeded', 'kwargs': OrderedDict([('mods', 'orch.iptables.exceeded'), ('pillar', OrderedDict([('id', 'mesos2.host.intranet')]))]), 'args': None}], '_stamp': '2020-03-0$
T16:52:10.129837', 'return': True, 'success': True}
[DEBUG ] LazyLoaded nested.output
True
Return when listing items:
[root@salt-master /]# salt-run queue.list_items iptables_exceeded backend=pgjsonb
|_
----------
args:
fun:
queue.insert_runner
kwargs:
----------
mods:
orch.iptables.exceeded
pillar:
----------
id:
mesos2.host.intranet
Versions Report
(Provided by running salt --versions-report. Please also mention any differences in master/minion versions.)
[root@salt-master /]# salt --version │[DEBUG ] SaltReqTimeoutError, retrying. (1/3) │1 bash
salt 3000