Salt state not available suddenly

I have a bunch of salt states defined under /srv/user_salt/foo/init.sls and I’ve created the user_salt directory through the sudo qubesctl state.sls qubes.user-dirs command.

It has previously worked to run these states but a while back it stopped working and now when I try to run

sudo qubesctl foo saltenv=user

I end up getting

'foo' is not available.
DOM0 configuration failed, not continuing

Oddly enough running the locale state gives another output.

local:
    ----------
    locale:
        'locale' is not available.
    locale.avail:
        
            Check if a locale is available.
        
            New in version 2014.7.0
        
            CLI Example:
        
                salt '*' locale.avail 'en_US.UTF-8'
            
    locale.gen_locale:
        
            Generate a locale. Options:
        
            New in version 2014.7.0
        
            :param locale: Any locale listed in /usr/share/i18n/locales or
                /usr/share/i18n/SUPPORTED for Debian and Gentoo based distributions,
                which require the charmap to be specified as part of the locale
                when generating it.
        
            verbose
                Show extra warnings about errors that are normally ignored.
        
            CLI Example:
        
                salt '*' locale.gen_locale en_US.UTF-8
                salt '*' locale.gen_locale 'en_IE.UTF-8 UTF-8'    # Debian/Gentoo only
            
    locale.get_locale:
        
            Get the current system locale
        
            CLI Example:
        
                salt '*' locale.get_locale
            
    locale.list_avail:
        
            Lists available (compiled) locales
        
            CLI Example:
        
                salt '*' locale.list_avail
            
    locale.set_locale:
        
            Sets the current system locale
        
            CLI Example:
        
                salt '*' locale.set_locale 'en_US.UTF-8'
            
[ERROR   ] An un-handled exception was caught by Salt's global exception handler:
KeyError: 'retcode'
Traceback (most recent call last):
  File "/usr/bin/qubesctl", line 130, in <module>
    salt_call()
  File "/usr/lib/python3.11/site-packages/salt/scripts.py", line 443, in salt_call
    client.run()
  File "/usr/lib/python3.11/site-packages/salt/cli/call.py", line 50, in run
    caller.run()
  File "/usr/lib/python3.11/site-packages/salt/cli/caller.py", line 116, in run
    sys.exit(ret["retcode"])
             ~~~^^^^^^^^^^^
KeyError: 'retcode'
Traceback (most recent call last):
  File "/usr/bin/qubesctl", line 130, in <module>
    salt_call()
  File "/usr/lib/python3.11/site-packages/salt/scripts.py", line 443, in salt_call
    client.run()
  File "/usr/lib/python3.11/site-packages/salt/cli/call.py", line 50, in run
    caller.run()
  File "/usr/lib/python3.11/site-packages/salt/cli/caller.py", line 116, in run
    sys.exit(ret["retcode"])
             ~~~^^^^^^^^^^^
KeyError: 'retcode'
DOM0 configuration failed, not continuing

I figured that it was running the locale state in my user_salt directory and tried to change the name of that directory, but it continued being able to run it, I changed the content of the init.sls file but it continued with the same output. So it seems like for some reason salt is not looking for states in my user_salt directory. I’ve tried looking for another locale file/directory that it might be finding when looking for that state, but haven’t found a plausible candidate.

Anyone know what is going on or know a way to debug this?

1 Like

I think you are supposed to run qubesctl state.sls foo saltenv=user, not just qubesctl foo slatenv=user

2 Likes

That works :sweat_smile:

1 Like