Base Classes#
Factories base classes.
- class saltfactories.bases.SaltMixin(*, config, config_dir=_Nothing.NOTHING, python_executable=None, system_service=False)[source]#
Bases:
object
Base factory for salt cli’s and daemon’s.
- Parameters:
- class saltfactories.bases.SaltCliImpl(*, factory)[source]#
Bases:
SubprocessImpl
Salt CLI’s subprocess interaction implementation.
Please look at
SubprocessImpl
for the additional supported keyword arguments documentation.- Parameters:
factory (Factory | Subprocess | ScriptSubprocess) –
- cmdline(*args, minion_tgt=None, **kwargs)[source]#
Construct a list of arguments to use when starting the subprocess.
- init_terminal(cmdline, shell=False, env=None, cwd=None)#
Instantiate a terminal with the passed command line(
cmdline
) and return it.Additionally, it sets a reference to it in
self._terminal
and also collects an initial listing of child processes which will be used when terminating the terminal
- is_running()#
Returns true if the sub-process is alive.
- Returns:
Returns true if the sub-process is alive
- Return type:
- run(*args, shell=False, env=None, cwd=None, **kwargs)#
Run the given command synchronously.
- Arguments:
- args:
The command to run.
- Keyword Arguments:
- shell:
Pass the value of shell to
pytestshellutils.shell.Factory.init_terminal()
- env:
A dictionary of
key
,value
pairs to add to thepytestshellutils.shell.Factory.environ
.- cwd:
A path for the CWD when running the process.
- Returns:
A
Popen
instance.
- terminate()#
Terminate the started subprocess.
- Return type:
- class saltfactories.bases.SaltCli(*, config, config_dir=_Nothing.NOTHING, python_executable=None, system_service=False, cwd=_Nothing.NOTHING, environ=_Nothing.NOTHING, slow_stop=True, system_encoding=_Nothing.NOTHING, timeout=_Nothing.NOTHING, script_name, base_script_args=_Nothing.NOTHING, hard_crash=False, merge_json_output=True)[source]#
Bases:
SaltMixin
,ScriptSubprocess
Base factory for salt cli’s.
- Parameters:
Please look at
Salt
andScriptSubprocess
for the additional supported keyword arguments documentation.- cmdline(*args, minion_tgt=None, merge_json_output=None, **kwargs)[source]#
Construct a list of arguments to use when starting the subprocess.
- Parameters:
args (str) – Additional arguments to use when starting the subprocess
minion_tgt (str) – The minion ID to target
merge_json_output (bool) – The default behavior of salt outputters is to print one line per minion return, which makes parsing the whole output as JSON impossible when targeting multiple minions. If this value is
True
, an attempt is made to merge each JSON line into a single dictionary.kwargs – Additional keyword arguments will be converted into
key=value
pairs to be consumed by the salt CLI’s
- process_output(stdout, stderr, cmdline=None)[source]#
Process the output. When possible JSON is loaded from the output.
- Returns:
Returns a tuple in the form of
(stdout, stderr, loaded_json)
- Return type:
- get_base_script_args()#
Returns any additional arguments to pass to the CLI script.
- get_display_name()#
Returns a human readable name for the factory.
- run(*args, env=None, _timeout=None, **kwargs)#
Run the given command synchronously.
- Keyword Arguments:
- args:
The list of arguments to pass to
cmdline()
to construct the command to run- env:
Pass a dictionary of environment key, value pairs to inject into the subprocess.
- _timeout:
The timeout value for this particular
run()
call. If this value is notNone
, it will be used instead oftimeout
, the default timeout.
- Parameters:
args (str) –
env (EnvironDict | None) –
kwargs (Any) –
- Return type:
- terminate()#
Terminate the started subprocess.
- Return type:
- class saltfactories.bases.SystemdSaltDaemonImpl(*, factory, before_start_callbacks=_Nothing.NOTHING, after_start_callbacks=_Nothing.NOTHING, before_terminate_callbacks=_Nothing.NOTHING, after_terminate_callbacks=_Nothing.NOTHING)[source]#
Bases:
DaemonImpl
Daemon systemd interaction implementation.
Please look at
DaemonImpl
for the additional supported keyword arguments documentation.- Parameters:
- cmdline(*args)[source]#
Construct a list of arguments to use when starting the subprocess.
- Parameters:
args (str) – Additional arguments to use when starting the subprocess
- property pid#
Return the
pid
of the running process.
- after_start(callback, *args, **kwargs)#
Register a function callback to run after the daemon starts.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- after_terminate(callback, *args, **kwargs)#
Register a function callback to run after the daemon terminates.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- before_start(callback, *args, **kwargs)#
Register a function callback to run before the daemon starts.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- before_terminate(callback, *args, **kwargs)#
Register a function callback to run before the daemon terminates.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- get_start_arguments()#
Return the arguments and keyword arguments used when starting the daemon.
- Return type:
- init_terminal(cmdline, shell=False, env=None, cwd=None)#
Instantiate a terminal with the passed command line(
cmdline
) and return it.Additionally, it sets a reference to it in
self._terminal
and also collects an initial listing of child processes which will be used when terminating the terminal
- run(*args, shell=False, env=None, cwd=None, **kwargs)#
Run the given command synchronously.
- Arguments:
- args:
The command to run.
- Keyword Arguments:
- shell:
Pass the value of shell to
pytestshellutils.shell.Factory.init_terminal()
- env:
A dictionary of
key
,value
pairs to add to thepytestshellutils.shell.Factory.environ
.- cwd:
A path for the CWD when running the process.
- Returns:
A
Popen
instance.
- terminate()#
Terminate the daemon.
- Return type:
- class saltfactories.bases.SaltDaemon(*, config, config_dir=_Nothing.NOTHING, python_executable=None, system_service=False, cwd=_Nothing.NOTHING, environ=_Nothing.NOTHING, slow_stop=True, system_encoding=_Nothing.NOTHING, timeout=_Nothing.NOTHING, script_name, base_script_args=_Nothing.NOTHING, check_ports=_Nothing.NOTHING, stats_processes=None, start_timeout, max_start_attempts=3, extra_cli_arguments_after_first_start_failure=_Nothing.NOTHING, start_checks_callbacks=_Nothing.NOTHING, event_listener=None, factories_manager=None, started_at=None)[source]#
-
Base factory for salt daemon’s.
Please look at
SaltMixin
andDaemon
for the additional supported keyword arguments documentation.- Parameters:
environ (EnvironDict) –
slow_stop (bool) –
system_encoding (str) –
script_name (str) –
stats_processes (StatsProcesses) –
max_start_attempts (int) –
- classmethod configure(factories_manager, daemon_id, root_dir=None, defaults=None, overrides=None, **configure_kwargs)[source]#
Configure the salt daemon.
- classmethod load_config(config_file, config)[source]#
Return the loaded configuration.
Should return the configuration as the daemon would have loaded after parsing the CLI
- get_check_events()[source]#
Return salt events to check.
Returns list of tuples in the form of (master_id, event_tag) check against to ensure the daemon is running.
- cmdline(*args)[source]#
Construct a list of arguments to use when starting the subprocess.
- Parameters:
args (str) – Additional arguments to use when starting the subprocess
- after_start(callback, *args, **kwargs)#
Register a function callback to run after the daemon starts.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- after_terminate(callback, *args, **kwargs)#
Register a function callback to run after the daemon terminates.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- before_start(callback, *args, **kwargs)#
Register a function callback to run before the daemon starts.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- before_terminate(callback, *args, **kwargs)#
Register a function callback to run before the daemon terminates.
- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- get_base_script_args()#
Returns any additional arguments to pass to the CLI script.
- get_check_ports()#
Return a list of ports to check against to ensure the daemon is running.
- get_display_name()#
Returns a human readable name for the factory.
- get_script_args()#
Returns any additional arguments to pass to the CLI script.
- get_start_check_callbacks()#
Return a list of the start check callbacks.
- process_output(stdout, stderr, cmdline=None)#
Process the output. When possible JSON is loaded from the output.
- Returns:
Returns a tuple in the form of
(stdout, stderr, loaded_json)
- run(*args, env=None, _timeout=None, **kwargs)#
Run the given command synchronously.
- Keyword Arguments:
- args:
The list of arguments to pass to
cmdline()
to construct the command to run- env:
Pass a dictionary of environment key, value pairs to inject into the subprocess.
- _timeout:
The timeout value for this particular
run()
call. If this value is notNone
, it will be used instead oftimeout
, the default timeout.
- Parameters:
args (str) –
env (EnvironDict | None) –
kwargs (Any) –
- Return type:
- run_start_checks(started_at, timeout_at)#
Run checks to confirm that the daemon has started.
- start(*extra_cli_arguments, max_start_attempts=None, start_timeout=None)#
Start the daemon.
- start_check(callback, *args, **kwargs)#
Register a function to run after the daemon starts to confirm readiness for work.
The callback must accept as the first argument
timeout_at
which is a float. The callback must stop trying to confirm running behavior oncetime.time() > timeout_at
. The callback should returnTrue
to confirm that the daemon is ready for work.- Arguments:
- callback:
The function to call back
- Keyword Arguments:
- args:
The arguments to pass to the callback
- kwargs:
The keyword arguments to pass to the callback
- Returns:
Nothing.
- Example:
def check_running_state(timeout_at: float) -> bool: while time.time() <= timeout_at: # run some checks ... # if all is good break else: return False return True
- started(*extra_cli_arguments, max_start_attempts=None, start_timeout=None)#
Start the daemon and return it’s instance so it can be used as a context manager.
- stopped(before_stop_callback=None, after_stop_callback=None, before_start_callback=None, after_start_callback=None)#
Stop the daemon and return it’s instance so it can be used as a context manager.
- Keyword Arguments:
- before_stop_callback:
A callable to run before stopping the daemon. The callback must accept one argument, the daemon instance.
- after_stop_callback:
A callable to run after stopping the daemon. The callback must accept one argument, the daemon instance.
- before_start_callback:
A callable to run before starting the daemon. The callback must accept one argument, the daemon instance.
- after_start_callback:
A callable to run after starting the daemon. The callback must accept one argument, the daemon instance.
This context manager will stop the factory while the context is in place, it re-starts it once out of context.
- Example:
assert factory.is_running() is True with factory.stopped(): assert factory.is_running() is False assert factory.is_running() is True
- terminate()#
Terminate the started subprocess.
- Return type: