Jul-01-2021, 07:22 PM
I'm trying to modify the existing SaltStack MySQL returner to only save a handful of data instead of the default columns
The file I'm working on is this one:
https://github.com/saltstack/salt/blob/m...s/mysql.py
I installed this python module
The part that I modified (line 313)
(| fun | jid | return | id | success | full_ret)
to something like(| fun | jid | return | id | success)
The file I'm working on is this one:
https://github.com/saltstack/salt/blob/m...s/mysql.py
I installed this python module
python3-mysqldb
so Salt can communicate with MySQL v8.0.25The part that I modified (line 313)
try: with _get_serv(ret, commit=True) as cur: sql = """INSERT INTO `salt_returns` (`fun`, `jid`, `id`, `success`) VALUES (%s, %s, %s, %s)"""But I'm getting this error when running something like
salt '*' test.ping --return mysql
Error:2021-07-01 11:46:05,693 [salt.minion :2055][ERROR ][16794] The return failed for job 20210701174605511891: not all arguments converted during string formatting
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 238, in execute
query = query % args
TypeError: not all arguments converted during string formatting
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/salt/minion.py", line 2044, in _thread_return
minion_instance.returners[returner_str](ret)
File "/usr/lib/python3/dist-packages/salt/loader.py", line 1235, in __call__
return self.loader.run(run_func, *args, **kwargs)
File "/usr/lib/python3/dist-packages/salt/loader.py", line 2268, in run
return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
File "/usr/lib/python3/dist-packages/salt/loader.py", line 2283, in _run_as
return _func_or_method(*args, **kwargs)
File "/usr/lib/python3/dist-packages/salt/returners/mysql.py", line 327, in returner
salt.utils.json.dumps(ret),
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 240, in execute
self.errorhandler(self, ProgrammingError, str(m))
File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 52, in defaulterrorhandler
raise errorclass(errorvalue)
_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting
I'm guessing it comes down to how each column in the table was defined, but I'm not sure where to make further modifications to write data in only those columns.