Skip to content

Duplicate list entries after default merge-last #54

@gbunt

Description

@gbunt

output of salt --versions:

Salt Version:
           Salt: 2018.3.3
 
Dependency Versions:
           cffi: 1.11.5
       cherrypy: Not Installed
       dateutil: 2.7.5
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
          ioflo: Not Installed
         Jinja2: 2.7.2
        libgit2: Not Installed
        libnacl: Not Installed
       M2Crypto: Not Installed
           Mako: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.5.6
   mysql-python: Not Installed
      pycparser: 2.19
       pycrypto: 2.6.1
   pycryptodome: Not Installed
         pygit2: Not Installed
         Python: 2.7.5 (default, Oct 30 2018, 23:45:53)
   python-gnupg: Not Installed
         PyYAML: 3.11
          PyZMQ: 14.3.1
           RAET: Not Installed
          smmap: Not Installed
        timelib: Not Installed
        Tornado: 4.2.1
            ZMQ: 3.2.5
 
System Versions:
           dist: centos 7.6.1810 Core
         locale: UTF-8
        machine: x86_64
        release: 3.10.0-957.5.1.el7.x86_64
         system: Linux
        version: CentOS Linux 7.6.1810 Core

Using the default merge-last, on some nested lists we get duplicate entries in final merged Pillar like:

    root_object:
        ----------
        firewall:
            ----------
            services:
                ----------
                some_service:
                    ----------
                    main:
                        ----------
                        http:
                            ----------
                            allow:
                                - ANY
                                - ANY

Where "stack" is yaml:

root_object:
  firewall:
    services:
      some_service:
        main:
          http:
            allow:
            - ANY

and JSON merged on top:

{
  "root_object": {
    "firewall": {
      "services": {
        "some_service": {
          "main": {
            "http": {
              "allow": [
                "ANY"
              ]
            }
          }
        }
      }
    }
  }
}

This only seems to happen on deeply nested lists, lists entries higher up the chain do not seem to result in duplicates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions