saltstack / saltstack/salt

[Bug]: container_resource module missing

Open
#69,899 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs-triage
Dominant language
Python
Stars
15.7k
Forks
5.6k
Avg merge
2d 44m
Merged PRs (30d)
80

Description

What happened?

I'm really sorry if I've missed something, but it really seems like this module has disapeared without any alternative or way forward.

https://docs.saltproject.io/en/3006/ref/modules/all/salt.modules.container_resource.html

I've been unable to find documented any info on its removal. However, it does seem lke it was removed in the following pr:

https://github.com/saltstack/salt/pull/65971/changes#diff-520a945bf90472cf25374a39d2a2cc4d665d5371b95d225b8731a5915ac45eec

I discovered this when upgrading from 3006.23 to 3008.2 using the following states that get templated:

{%- for file in ['ca.pem','cert.pem','csr.pem','key.pem','openssl.cnf'] %}
gitea_dind_docker_copy_tls_{{ file }}:
  module.run:
    - docker.cp:
        - name: {{ dind_name }}
        - source: /certs/client/{{ file }}
        - dest: '/etc/gitea/runners/host-dind/certs/{{ file }}'
        - makedirs: True
        - overwrite: True
      require:
        - module: gitea_ensure_dind_running
        - file: gitea_host_dind_dir_created
      require_in:
        - file: gitea_ensure_host_dind_permissions
      unless: >-
        docker exec docker-dind cat /certs/client/{{ file }} |
          diff - /etc/gitea/runners/host-dind/certs/{{ file }}
{%- endfor %}

The error is as follows:

----------
          ID: gitea_dind_docker_copy_tls_ca.pem
    Function: module.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/state.py", line 2401, in call
                  ret = self.states[cdata["full"]](
                      *cdata["args"], **cdata["kwargs"]
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1531, in wrapper
                  return f(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 397, in run
                  return _run(**kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 452, in _run
                  func_ret = _call_function(
                      _func, returner=kwargs.get("returner"), func_args=kwargs.get(func)
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 500, in _call_function
                  mret = salt.utils.functools.call_function(__salt__[name], *func_args, **func_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/functools.py", line 146, in call_function
                  return salt_function(*function_args, **function_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 3637, in copy_from
                  if retcode(name, f"test -e {shlex.quote(source)}", ignore_retcode=True) == 0:
                     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6212, in retcode
                  return _run(
                      name,
                  ...<8 lines>...
                      keep_env=keep_env,
                  )
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 490, in wrapper
                  returned = wrapped(*args, **salt.utils.args.clean_kwargs(**kwargs))
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6069, in _run
                  ret = __salt__["container_resource.run"](
                        ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/context.py", line 106, in __getitem__
                  return self.value()[item]
                         ~~~~~~~~~~~~^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 519, in __getitem__
                  _ = super().__getitem__(item)  # try to get the item from the dictionary
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/lazy.py", line 106, in __getitem__
                  return self._dict[key]
                         ~~~~~~~~~~^^^^^
              KeyError: 'container_resource.run'
     Started: 21:31:32.817595
    Duration: 157.267 ms
     Changes:
----------
          ID: gitea_dind_docker_copy_tls_cert.pem
    Function: module.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/state.py", line 2401, in call
                  ret = self.states[cdata["full"]](
                      *cdata["args"], **cdata["kwargs"]
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1531, in wrapper
                  return f(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 397, in run
                  return _run(**kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 452, in _run
                  func_ret = _call_function(
                      _func, returner=kwargs.get("returner"), func_args=kwargs.get(func)
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 500, in _call_function
                  mret = salt.utils.functools.call_function(__salt__[name], *func_args, **func_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/functools.py", line 146, in call_function
                  return salt_function(*function_args, **function_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 3637, in copy_from
                  if retcode(name, f"test -e {shlex.quote(source)}", ignore_retcode=True) == 0:
                     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6212, in retcode
                  return _run(
                      name,
                  ...<8 lines>...
                      keep_env=keep_env,
                  )
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 490, in wrapper
                  returned = wrapped(*args, **salt.utils.args.clean_kwargs(**kwargs))
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6069, in _run
                  ret = __salt__["container_resource.run"](
                        ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/context.py", line 106, in __getitem__
                  return self.value()[item]
                         ~~~~~~~~~~~~^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 519, in __getitem__
                  _ = super().__getitem__(item)  # try to get the item from the dictionary
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/lazy.py", line 106, in __getitem__
                  return self._dict[key]
                         ~~~~~~~~~~^^^^^
              KeyError: 'container_resource.run'
     Started: 21:31:32.975181
    Duration: 121.629 ms
     Changes:
----------
          ID: gitea_dind_docker_copy_tls_csr.pem
    Function: module.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/state.py", line 2401, in call
                  ret = self.states[cdata["full"]](
                      *cdata["args"], **cdata["kwargs"]
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1531, in wrapper
                  return f(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 397, in run
                  return _run(**kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 452, in _run
                  func_ret = _call_function(
                      _func, returner=kwargs.get("returner"), func_args=kwargs.get(func)
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 500, in _call_function
                  mret = salt.utils.functools.call_function(__salt__[name], *func_args, **func_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/functools.py", line 146, in call_function
                  return salt_function(*function_args, **function_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 3637, in copy_from
                  if retcode(name, f"test -e {shlex.quote(source)}", ignore_retcode=True) == 0:
                     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6212, in retcode
                  return _run(
                      name,
                  ...<8 lines>...
                      keep_env=keep_env,
                  )
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 490, in wrapper
                  returned = wrapped(*args, **salt.utils.args.clean_kwargs(**kwargs))
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6069, in _run
                  ret = __salt__["container_resource.run"](
                        ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/context.py", line 106, in __getitem__
                  return self.value()[item]
                         ~~~~~~~~~~~~^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 519, in __getitem__
                  _ = super().__getitem__(item)  # try to get the item from the dictionary
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/lazy.py", line 106, in __getitem__
                  return self._dict[key]
                         ~~~~~~~~~~^^^^^
              KeyError: 'container_resource.run'
     Started: 21:31:33.097071
    Duration: 131.63 ms
     Changes:
----------
          ID: gitea_dind_docker_copy_tls_key.pem
    Function: module.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/state.py", line 2401, in call
                  ret = self.states[cdata["full"]](
                      *cdata["args"], **cdata["kwargs"]
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1531, in wrapper
                  return f(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 397, in run
                  return _run(**kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 452, in _run
                  func_ret = _call_function(
                      _func, returner=kwargs.get("returner"), func_args=kwargs.get(func)
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 500, in _call_function
                  mret = salt.utils.functools.call_function(__salt__[name], *func_args, **func_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/functools.py", line 146, in call_function
                  return salt_function(*function_args, **function_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 3637, in copy_from
                  if retcode(name, f"test -e {shlex.quote(source)}", ignore_retcode=True) == 0:
                     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6212, in retcode
                  return _run(
                      name,
                  ...<8 lines>...
                      keep_env=keep_env,
                  )
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 490, in wrapper
                  returned = wrapped(*args, **salt.utils.args.clean_kwargs(**kwargs))
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6069, in _run
                  ret = __salt__["container_resource.run"](
                        ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/context.py", line 106, in __getitem__
                  return self.value()[item]
                         ~~~~~~~~~~~~^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 519, in __getitem__
                  _ = super().__getitem__(item)  # try to get the item from the dictionary
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/lazy.py", line 106, in __getitem__
                  return self._dict[key]
                         ~~~~~~~~~~^^^^^
              KeyError: 'container_resource.run'
     Started: 21:31:33.228968
    Duration: 197.579 ms
     Changes:
----------
          ID: gitea_dind_docker_copy_tls_openssl.cnf
    Function: module.run
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/state.py", line 2401, in call
                  ret = self.states[cdata["full"]](
                      *cdata["args"], **cdata["kwargs"]
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1531, in wrapper
                  return f(*args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 397, in run
                  return _run(**kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 452, in _run
                  func_ret = _call_function(
                      _func, returner=kwargs.get("returner"), func_args=kwargs.get(func)
                  )
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/states/module.py", line 500, in _call_function
                  mret = salt.utils.functools.call_function(__salt__[name], *func_args, **func_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/functools.py", line 146, in call_function
                  return salt_function(*function_args, **function_kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 177, in __call__
                  ret = self.loader.run(run_func, *args, **kwargs)
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1480, in run
                  return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
                         ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 1495, in _run_as
                  ret = _func_or_method(*args, **kwargs)
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 3637, in copy_from
                  if retcode(name, f"test -e {shlex.quote(source)}", ignore_retcode=True) == 0:
                     ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6212, in retcode
                  return _run(
                      name,
                  ...<8 lines>...
                      keep_env=keep_env,
                  )
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 490, in wrapper
                  returned = wrapped(*args, **salt.utils.args.clean_kwargs(**kwargs))
                File "/opt/saltstack/salt/extras-3.14/saltext/dockermod/modules/dockermod.py", line 6069, in _run
                  ret = __salt__["container_resource.run"](
                        ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/context.py", line 106, in __getitem__
                  return self.value()[item]
                         ~~~~~~~~~~~~^^^^^^
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/loader/lazy.py", line 519, in __getitem__
                  _ = super().__getitem__(item)  # try to get the item from the dictionary
                File "/opt/saltstack/salt/lib/python3.14/site-packages/salt/utils/lazy.py", line 106, in __getitem__
                  return self._dict[key]
                         ~~~~~~~~~~^^^^^
              KeyError: 'container_resource.run'
     Started: 21:31:33.426892
    Duration: 147.995 ms
     Changes:

I think I can work around the issue easy enough, to be honest, its not much better than just attempting to write and idempotent shell script. Still, it would be nice to know whether the container_resource module was removed on purpose since I can't find any mention of intending to delete it anywhere. My current guess is that this isn't a bug, because it looks like lxc and nspawn modules have also been removed (but again, if there were any documentation on their removal, then I missed it.)

Is the path forward to create an execution module for this container_resource execution module?

Type of salt install

other (please specify in bug details)

Major version

3008.x

What supported OS are you seeing the problem on? Can select multiple. (If bug appears on an unsupported OS, please open a GitHub Discussion instead)

debian-13

salt --versions-report output
# salt-call --versions-report
Salt Version:
              Salt: 3008.2

Python Version:
            Python: 3.14.6 (main, Jun 11 2026, 02:19:05) [GCC 11.2.0]

Dependency Versions:
              cffi: 2.0.0
          cherrypy: 18.10.0
      cryptography: 48.0.0
          dateutil: 2.9.0.post0
         docker-py: 7.2.0
             gitdb: 4.0.12
         gitpython: 3.1.50
            Jinja2: 3.1.6
           libgit2: Not Installed
      looseversion: 1.3.0
          M2Crypto: Not Installed
              Mako: Not Installed
           msgpack: 1.1.2
      msgpack-pure: Not Installed
      mysql-python: Not Installed
         packaging: 24.0
         pycparser: 3.00
          pycrypto: Not Installed
      pycryptodome: 3.23.0
            pygit2: Not Installed
      python-gnupg: 0.5.6
            PyYAML: 6.0.3
             PyZMQ: 27.1.0
            relenv: 0.22.14
             smmap: 5.0.2
           timelib: 0.3.0
           Tornado: 6.5.7
               ZMQ: 4.3.5

Salt Extensions:
 saltext.dockermod: 0.1.1
     saltext.vault: 1.5.0

Salt Package Information:
      Package Type: onedir

System Versions:
              dist: debian 13.6 trixie
            locale: utf-8
           machine: x86_64
           release: 7.1.5-arch1-1
            system: Linux
           version: Debian GNU/Linux 13.6 trixie

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 with saltext/dockermod/modules/dockermod.py, especially copy_from, retcode, and _run, then compare the container_resource removal in pull request 65971. Trace why the Docker module still requests container_resource.run and determine the supported replacement or compatibility path. Done means the reported Docker state no longer raises KeyError and the removal is documented or handled consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.