[Bug]: container_resource module missing
Nobody has claimed this yet.
- 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:
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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