mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add PHC and timestamping info to network interface facts on Linux (#21767)
This commit is contained in:
parent
25be6aebc3
commit
c1a766df98
1 changed files with 15 additions and 3 deletions
|
@ -2721,7 +2721,7 @@ class LinuxNetwork(Network):
|
||||||
parse_ip_output(primary_data)
|
parse_ip_output(primary_data)
|
||||||
parse_ip_output(secondary_data, secondary=True)
|
parse_ip_output(secondary_data, secondary=True)
|
||||||
|
|
||||||
interfaces[device]['features'] = self.get_ethtool_data(device)
|
interfaces[device].update(self.get_ethtool_data(device))
|
||||||
|
|
||||||
# replace : by _ in interface name since they are hard to use in template
|
# replace : by _ in interface name since they are hard to use in template
|
||||||
new_interfaces = {}
|
new_interfaces = {}
|
||||||
|
@ -2734,12 +2734,13 @@ class LinuxNetwork(Network):
|
||||||
|
|
||||||
def get_ethtool_data(self, device):
|
def get_ethtool_data(self, device):
|
||||||
|
|
||||||
features = {}
|
data = {}
|
||||||
ethtool_path = self.module.get_bin_path("ethtool")
|
ethtool_path = self.module.get_bin_path("ethtool")
|
||||||
if ethtool_path:
|
if ethtool_path:
|
||||||
args = [ethtool_path, '-k', device]
|
args = [ethtool_path, '-k', device]
|
||||||
rc, stdout, stderr = self.module.run_command(args, errors='surrogate_then_replace')
|
rc, stdout, stderr = self.module.run_command(args, errors='surrogate_then_replace')
|
||||||
if rc == 0:
|
if rc == 0:
|
||||||
|
features = {}
|
||||||
for line in stdout.strip().splitlines():
|
for line in stdout.strip().splitlines():
|
||||||
if not line or line.endswith(":"):
|
if not line or line.endswith(":"):
|
||||||
continue
|
continue
|
||||||
|
@ -2747,7 +2748,18 @@ class LinuxNetwork(Network):
|
||||||
if not value:
|
if not value:
|
||||||
continue
|
continue
|
||||||
features[key.strip().replace('-','_')] = value.strip()
|
features[key.strip().replace('-','_')] = value.strip()
|
||||||
return features
|
data['features'] = features
|
||||||
|
|
||||||
|
args = [ethtool_path, '-T', device]
|
||||||
|
rc, stdout, stderr = self.module.run_command(args, errors='surrogate_then_replace')
|
||||||
|
if rc == 0:
|
||||||
|
data['timestamping'] = [m.lower() for m in re.findall('SOF_TIMESTAMPING_(\w+)', stdout)]
|
||||||
|
data['hw_timestamp_filters'] = [m.lower() for m in re.findall('HWTSTAMP_FILTER_(\w+)', stdout)]
|
||||||
|
m = re.search('PTP Hardware Clock: (\d+)', stdout)
|
||||||
|
if m:
|
||||||
|
data['phc_index'] = int(m.groups()[0])
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class GenericBsdIfconfigNetwork(Network):
|
class GenericBsdIfconfigNetwork(Network):
|
||||||
|
|
Loading…
Reference in a new issue