saltstack / saltstack/salt

[BUG] - pillar include logic seems to have changed

Open
#60,657 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug pending-discussion Pillar Regression
Dominant language
Python
Stars
15.7k
Forks
5.6k
Avg merge
2d 44m
Merged PRs (30d)
80

Description

WARN: I was unable to revert to the older version of salt to confirm the following.

Salt Version:
          Salt: 3003.1
 
Dependency Versions:
          cffi: Not Installed
      cherrypy: Not Installed
      dateutil: 2.6.1
     docker-py: Not Installed
         gitdb: 2.0.3
     gitpython: 2.1.8
        Jinja2: 2.10
       libgit2: 0.26.0
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 0.5.6
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: Not Installed
      pycrypto: Not Installed
  pycryptodome: 3.4.7
        pygit2: 0.26.2
        Python: 3.6.9 (default, Jan 26 2021, 15:33:00)
  python-gnupg: 0.4.1
        PyYAML: 3.12
         PyZMQ: 17.1.2
         smmap: 2.0.3
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.2.5
 
System Versions:
          dist: ubuntu 18.04 Bionic Beaver
        locale: UTF-8
       machine: x86_64
       release: 4.15.0-151-generic
        system: Linux
       version: Ubuntu 18.04 Bionic Beaver

in the past i think it was version (2017.7.4) a pillar like

pillar.sls

include:
    - a1
    - a2
    - a1

a1.sls

__test: {{sls}}

a2.sls

__test: {{sls}}

would have __test=a2 because it skips the last include since it was already included.

The new behavior is not "bad" but is unexpected and caused some of my systems to get different pillars values than previous version.

I have pillars systems setup like...

base.sls

stuff: x
msg: z

auth-base.sls

include:
 - base
stuff: y
msg: dont_ever

auth-domain.sls

include:
 - base
stuff: z

cpu123.sls

include:
 - auth-base
 - auth-domain

I expected cpu123 piller msg: dont_ever but because auth-domain also includes base I think that's why I see msg: z.

Again I was not able to revert to the previous version to confirm these findings.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the include layouts shown in the issue with Salt 3003.1, especially the repeated base include through auth-base and auth-domain, and compare the resulting pillar values with the reported older behavior. Done means the include resolution behavior is confirmed and the expected values for __test and msg are either restored or clearly documented with a regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.