-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Open
Labels
PlatformRelates to OS, containers, platform-based utilities like FS, system based appsRelates to OS, containers, platform-based utilities like FS, system based appsState-Modulebugbroken, incorrect, or confusing behaviorbroken, incorrect, or confusing behaviorseverity-medium3rd level, incorrect or bad functionality, confusing and lacks a work around3rd level, incorrect or bad functionality, confusing and lacks a work around
Milestone
Description
Description of Issue/Question
file.serialize has the merge_if_exists option.
When serializing to JSON, it apparently assumes the top level to be a dict.
While this is of course extremely common, it's not always true, and when it's not, the serializer crashes.
Steps to Reproduce Issue
SLS:
my-json-list:
file.serialize:
- name: /tmp/list.json
- formatter: json
- merge_if_exists: True
- dataset:
- tea
- pot
# cat /tmp/list.json
[ "tea", "kettle" ]
ID: my-json-list
Function: file.serialize
Name: /tmp/list.json
Result: False
Comment: An exception occurred in this state: Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/salt/state.py", line 1746, in call
**cdata['kwargs'])
File "/usr/lib/python2.7/dist-packages/salt/loader.py", line 1704, in wrapper
return f(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/salt/states/file.py", line 5144, in serialize
merged_data = salt.utils.dictupdate.merge_recurse(existing_data, dataset)
File "/usr/lib/python2.7/dist-packages/salt/utils/dictupdate.py", line 82, in merge_recurse
return update(copied, obj_b, merge_lists=merge_lists)
File "/usr/lib/python2.7/dist-packages/salt/utils/dictupdate.py", line 35, in update
raise TypeError('Cannot update using non-dict types in dictupdate.update()')
TypeError: Cannot update using non-dict types in dictupdate.update()
Started: 11:32:11.537613
Duration: 3.339 ms
Changes:
Versions Report
Salt Version:
Salt: 2016.11.4
Dependency Versions:
cffi: Not Installed
cherrypy: Not Installed
dateutil: 2.4.2
docker-py: Not Installed
gitdb: Not Installed
gitpython: Not Installed
ioflo: Not Installed
Jinja2: 2.8
libgit2: Not Installed
libnacl: Not Installed
M2Crypto: Not Installed
Mako: 1.0.3
msgpack-pure: Not Installed
msgpack-python: 0.4.6
mysql-python: Not Installed
pycparser: Not Installed
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: Not Installed
Python: 2.7.12 (default, Nov 19 2016, 06:48:10)
python-gnupg: Not Installed
PyYAML: 3.11
PyZMQ: 15.2.0
RAET: Not Installed
smmap: Not Installed
timelib: Not Installed
Tornado: 4.2.1
ZMQ: 4.1.4
System Versions:
dist: Ubuntu 16.04 xenial
machine: x86_64
release: 4.10.0-20-generic
system: Linux
version: Ubuntu 16.04 xenial
jamest-pin
Metadata
Metadata
Assignees
Labels
PlatformRelates to OS, containers, platform-based utilities like FS, system based appsRelates to OS, containers, platform-based utilities like FS, system based appsState-Modulebugbroken, incorrect, or confusing behaviorbroken, incorrect, or confusing behaviorseverity-medium3rd level, incorrect or bad functionality, confusing and lacks a work around3rd level, incorrect or bad functionality, confusing and lacks a work around