Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] json encoding does not work with sort #273

Open
crosscodr opened this issue Jan 5, 2021 · 0 comments
Open

[BUG] json encoding does not work with sort #273

crosscodr opened this issue Jan 5, 2021 · 0 comments
Labels

Comments

@crosscodr
Copy link

crosscodr commented Jan 5, 2021

Your setup

Formula commit hash / release tag

release tag v2.5.0 (1920340)
Also v2.6.0 - v2.7.0 have the same problem.

Versions reports (master & minion)

Salt Version:
Salt: 3001.4

Dependency Versions:
cffi: Not Installed
cherrypy: Not Installed
dateutil: 2.7.3
docker-py: Not Installed
gitdb: 2.0.6
gitpython: 3.0.7
Jinja2: 2.10.1
libgit2: Not Installed
M2Crypto: Not Installed
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.6.2
mysql-python: Not Installed
pycparser: Not Installed
pycrypto: 2.6.1
pycryptodome: 3.6.1
pygit2: Not Installed
Python: 3.8.5 (default, Jul 28 2020, 12:59:40)
python-gnupg: 0.4.5
PyYAML: 5.3.1
PyZMQ: 18.1.1
smmap: 2.0.5
timelib: Not Installed
Tornado: 4.5.3
ZMQ: 4.3.2

System Versions:
dist: ubuntu 20.04 focal
locale: utf-8
machine: x86_64
release: 5.4.0-58-generic
system: Linux
version: Ubuntu 20.04 focal

Pillar / config used

servers_config.sls and snippets.sls from latest release 2.5.0


Bug details

Describe the bug

servers_config.sls and nginx.snippets fail to render in v2.5.0 because of unsupported comparison between 'int' and 'str':

    Rendering SLS 'base:nginx.servers' failed: Jinja error: '<' not supported between instances of 'str' and 'int'
/var/cache/salt/minion/files/base/nginx/servers_config.sls(133):
---
[...]
    - require_in:
      - service: nginx_service
{% if 'source_path' not in settings.config %}
    - context:
        config: {{ settings.config|json(sort_keys=False) }}
        nginx: {{ _nginx|json() }}    <======================
{% endif %}
    {% if 'overwrite' in settings and settings.overwrite == False %}
    - unless:
      - test -e {{ server_curpath(server) }}
    {% endif %}
[...]
---
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/salt/utils/templates.py", line 400, in render_jinja_tmpl
    output = template.render(**decoded_context)
  File "/usr/lib/python3/dist-packages/jinja2/asyncsupport.py", line 76, in render
    return original_render(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3/dist-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "<template>", line 7, in <module>
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1073, in make_module
    return TemplateModule(self, self.new_context(vars, shared, locals))
  File "/usr/lib/python3/dist-packages/jinja2/environment.py", line 1152, in __init__
    body_stream = list(template.root_render_func(context))
  File "/var/cache/salt/minion/files/base/nginx/servers_config.sls", line 133, in <module>
    nginx: {{ _nginx|json() }}
  File "/usr/lib/python3/dist-packages/salt/utils/jinja.py", line 940, in format_json
    json_txt = salt.utils.json.dumps(
  File "/usr/lib/python3/dist-packages/salt/utils/json.py", line 149, in dumps
    return json_module.dumps(obj, **kwargs)  # future lint: blacklisted-function
  File "/usr/lib/python3.8/json/__init__.py", line 234, in dumps
    return cls(
  File "/usr/lib/python3.8/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.8/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
TypeError: '<' not supported between instances of 'str' and 'int'

Steps to reproduce the bug

git checkout v2.5.0
salt state.apply nginx.config,nginx.servers

Expected behaviour

state.apply run sucessfully

Attempts to fix the bug

For me it worked with
json(sort_keys=False)

@crosscodr crosscodr added the bug label Jan 5, 2021
@crosscodr crosscodr changed the title [BUG] v2.5.0 json encoding does not work with sort [BUG] json encoding does not work with sort Mar 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant