Skip to content

[BUG] apt pkgrepo.managed signed-by and test=true is messed up #62662

@babs

Description

@babs

Description

When calling with test=true, a pkgrepo.managed containing a signed-by statement reports a pending change with a messed up new line, by messed up I mean:

  • original URL disappear
  • a signedby stanza pops in

Please, note that it works fine without the test=true

Setup

example sls:

/usr/share/keyrings/kubernetes-archive-keyring.gpg:
  file.managed:
    - source: salt://test/files/kubernetes-archive-keyring.gpg

k8s repository mirror:
  pkgrepo.managed:
    - name: deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main
    - file: /etc/apt/sources.list.d/kubernetes.list
    - clean_file: true
    - require:
      - file: /usr/share/keyrings/kubernetes-archive-keyring.gpg

Steps to Reproduce the behavior
See first screenshot with color, way more readable, issue is underlined in red.

salt-call state.apply test.sources
 demo # salt-call state.apply test.sources
local:
----------
          ID: /usr/share/keyrings/kubernetes-archive-keyring.gpg
    Function: file.managed
      Result: True
     Comment: File /usr/share/keyrings/kubernetes-archive-keyring.gpg updated
     Started: 14:53:13.590458
    Duration: 29.119 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0644
----------
          ID: k8s repository mirror
    Function: pkgrepo.managed
        Name: deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main
      Result: True
     Comment: Configured package repo 'deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main'
     Started: 14:53:13.635203
    Duration: 2418.913 ms
     Changes:   
              ----------
              repo:
                  deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main

Summary for local
------------
Succeeded: 2 (changed=2)
Failed:    0
------------
Total states run:     2
Total run time:   2.448 s
salt-call state.apply test.sources test=true
 demo # salt-call state.apply test.sources test=true
local:
----------
          ID: /usr/share/keyrings/kubernetes-archive-keyring.gpg
    Function: file.managed
      Result: True
     Comment: The file /usr/share/keyrings/kubernetes-archive-keyring.gpg is in the correct state
     Started: 14:53:21.196263
    Duration: 20.492 ms
     Changes:   
----------
          ID: k8s repository mirror
    Function: pkgrepo.managed
        Name: deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main
      Result: None
     Comment: Package repo 'deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main' would be configured. This may cause pkg states to behave differently than stated if this action is repeated without test=True, due to the differences in the configured repositories.
     Started: 14:53:21.231250
    Duration: 85.452 ms
     Changes:   
              ----------
              line:
                  ----------
                  new:
                      deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg signedby] kubernetes-xenial main
                  old:
                      deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io kubernetes-xenial main

Summary for local
------------
Succeeded: 2 (unchanged=1, changed=1)
Failed:    0
------------
Total states run:     2
Total run time: 105.944 ms

image

Expected behavior
The state shouldn't report any change in test mode.

image

Versions Report

salt --versions-report
Salt Version:
          Salt: 3005
 
Dependency Versions:
          cffi: Not Installed
      cherrypy: Not Installed
      dateutil: 2.8.1
     docker-py: Not Installed
         gitdb: 4.0.5
     gitpython: 3.1.14
        Jinja2: 2.11.3
       libgit2: Not Installed
      M2Crypto: Not Installed
          Mako: Not Installed
       msgpack: 1.0.0
  msgpack-pure: Not Installed
  mysql-python: Not Installed
     pycparser: Not Installed
      pycrypto: Not Installed
  pycryptodome: 3.9.7
        pygit2: Not Installed
        Python: 3.9.2 (default, Feb 28 2021, 17:03:44)
  python-gnupg: Not Installed
        PyYAML: 5.3.1
         PyZMQ: 20.0.0
         smmap: 4.0.0
       timelib: Not Installed
       Tornado: 4.5.3
           ZMQ: 4.3.4
 
System Versions:
          dist: debian 11 bullseye
        locale: utf-8
       machine: x86_64
       release: 5.10.0-11-amd64
        system: Linux
       version: Debian GNU/Linux 11 bullseye

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions