mirror of
https://github.com/saltstack/salt.git
synced 2025-04-10 14:51:40 +00:00
94 lines
2.3 KiB
Python
94 lines
2.3 KiB
Python
import logging
|
|
import pathlib
|
|
import subprocess
|
|
|
|
import pytest
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def master_alive_interval():
|
|
return 5
|
|
|
|
|
|
class HostsFile:
|
|
"""
|
|
Simple helper class for tests that need to modify /etc/hosts.
|
|
"""
|
|
|
|
def __init__(self, path, orig_text):
|
|
self._path = path
|
|
self._orig_text = orig_text
|
|
|
|
@property
|
|
def orig_text(self):
|
|
return self._orig_text
|
|
|
|
def __getattr__(self, key):
|
|
if key in ["_path", "_orig_text", "orig_text"]:
|
|
return self.__getattribute__(key)
|
|
return getattr(self._path, key)
|
|
|
|
|
|
@pytest.fixture
|
|
def etc_hosts():
|
|
hosts = pathlib.Path("/etc/hosts")
|
|
orig_text = hosts.read_text(encoding="utf-8")
|
|
hosts = HostsFile(hosts, orig_text)
|
|
try:
|
|
yield hosts
|
|
finally:
|
|
hosts.write_text(orig_text)
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def master(request, salt_factories):
|
|
|
|
subprocess.check_output(["ip", "addr", "add", "172.16.0.1/32", "dev", "lo"])
|
|
|
|
config_defaults = {
|
|
"open_mode": True,
|
|
"transport": request.config.getoption("--transport"),
|
|
}
|
|
config_overrides = {
|
|
"interface": "0.0.0.0",
|
|
}
|
|
factory = salt_factories.salt_master_daemon(
|
|
"master",
|
|
defaults=config_defaults,
|
|
overrides=config_overrides,
|
|
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
|
)
|
|
with factory.started(start_timeout=180):
|
|
yield factory
|
|
|
|
try:
|
|
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
|
|
except subprocess.CalledProcessError:
|
|
pass
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def salt_cli(master):
|
|
return master.salt_cli(timeout=180)
|
|
|
|
|
|
@pytest.fixture(scope="package")
|
|
def minion(master, master_alive_interval):
|
|
config_defaults = {
|
|
"transport": master.config["transport"],
|
|
}
|
|
port = master.config["ret_port"]
|
|
config_overrides = {
|
|
"master": f"master.local:{port}",
|
|
"publish_port": master.config["publish_port"],
|
|
"master_alive_interval": master_alive_interval,
|
|
}
|
|
factory = master.salt_minion_daemon(
|
|
"minion",
|
|
defaults=config_defaults,
|
|
overrides=config_overrides,
|
|
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
|
)
|
|
return factory
|