Fix listing minions on OpenBSD

This commit is contained in:
jeanluc 2022-09-11 15:27:15 +02:00 committed by Megan Wilhite
parent fed79378c0
commit 676be79ba7
3 changed files with 24 additions and 3 deletions

1
changelog/61966.fixed Normal file
View file

@ -0,0 +1 @@
Fixed listing minions on OpenBSD

View file

@ -1928,11 +1928,11 @@ def _openbsd_remotes_on(port, which_end):
data = subprocess.check_output(
["netstat", "-nf", "inet"]
) # pylint: disable=minimum-python-version
except subprocess.CalledProcessError:
log.error("Failed netstat")
except subprocess.CalledProcessError as exc:
log.error('Failed "netstat" with returncode = %s', exc.returncode)
raise
lines = data.split("\n")
lines = salt.utils.stringutils.to_str(data).split("\n")
for line in lines:
if "ESTABLISHED" not in line:
continue

View file

@ -111,6 +111,12 @@ USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
salt-master python2.781106 35 tcp4 127.0.0.1:61115 127.0.0.1:4506
"""
OPENBSD_NETSTAT = """\
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 0 127.0.0.1.61115 127.0.0.1.4506 ESTABLISHED
"""
LINUX_NETLINK_SS_OUTPUT = """\
State Recv-Q Send-Q Local Address:Port Peer Address:Port
TIME-WAIT 0 0 [::1]:8009 [::1]:40368
@ -647,6 +653,20 @@ class NetworkTestCase(TestCase):
remotes = network._netlink_tool_remote_on("4505", "remote_port")
self.assertEqual(remotes, {"127.0.0.1", "::ffff:1.2.3.4"})
def test_openbsd_remotes_on(self):
with patch("subprocess.check_output", return_value=OPENBSD_NETSTAT):
remotes = network._openbsd_remotes_on("4506", "remote")
self.assertEqual(remotes, {"127.0.0.1"})
def test_openbsd_remotes_on_issue_61966(self):
"""
Test that the command output is correctly converted to string before
treating it as such
"""
with patch("subprocess.check_output", return_value=OPENBSD_NETSTAT.encode()):
remotes = network._openbsd_remotes_on("4506", "remote")
self.assertEqual(remotes, {"127.0.0.1"})
def test_generate_minion_id_distinct(self):
"""
Test if minion IDs are distinct in the pool.