From 3d4e0e070e84581d4eb28cb623c019c30daf85f4 Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Tue, 28 Mar 2023 13:50:10 -0500 Subject: interfaces: T4885: fix Perl to Python rewrite of clear/reset_counters --- python/vyos/ifconfig/operational.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/python/vyos/ifconfig/operational.py b/python/vyos/ifconfig/operational.py index 33e8614f0..dc2742123 100644 --- a/python/vyos/ifconfig/operational.py +++ b/python/vyos/ifconfig/operational.py @@ -143,15 +143,17 @@ class Operational(Control): except IOError: return no_stats - def clear_counters(self, counters=None): - clear = self._stats_all if counters is None else [] - stats = self.load_counters() + def clear_counters(self): + stats = self.get_stats() for counter, value in stats.items(): - stats[counter] = 0 if counter in clear else value + stats[counter] = value self.save_counters(stats) def reset_counters(self): - os.remove(self.cachefile(self.ifname)) + try: + os.remove(self.cachefile(self.ifname)) + except FileNotFoundError: + pass def get_stats(self): """ return a dict() with the value for each interface counter """ -- cgit v1.2.3 From 9964b04e0aba8b8e50509faa9aef5ce079a8733b Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Tue, 28 Mar 2023 13:53:55 -0500 Subject: interfaces: T4885: add clear/reset_counters to op-mode script --- src/op_mode/interfaces.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/op_mode/interfaces.py b/src/op_mode/interfaces.py index 7d04ec4e3..dd87b5901 100755 --- a/src/op_mode/interfaces.py +++ b/src/op_mode/interfaces.py @@ -406,6 +406,18 @@ def show_counters(raw: bool, intf_name: typing.Optional[str], return data return _format_show_counters(data) +def clear_counters(intf_name: typing.Optional[str], + intf_type: typing.Optional[str], + vif: bool, vrrp: bool): + for interface in filtered_interfaces(intf_name, intf_type, vif, vrrp): + interface.operational.clear_counters() + +def reset_counters(intf_name: typing.Optional[str], + intf_type: typing.Optional[str], + vif: bool, vrrp: bool): + for interface in filtered_interfaces(intf_name, intf_type, vif, vrrp): + interface.operational.reset_counters() + if __name__ == '__main__': try: res = vyos.opmode.run(sys.modules[__name__]) -- cgit v1.2.3 From a1c9c36c917a23d4cc3d5a9bbdd92c18829679b7 Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Tue, 28 Mar 2023 13:55:08 -0500 Subject: interfaces: T4885: add op-mode-defs for clear interfaces counters --- op-mode-definitions/counters.xml.in | 598 ++++++++++++++++++++++++++++++++++++ op-mode-definitions/wireless.xml.in | 40 --- 2 files changed, 598 insertions(+), 40 deletions(-) create mode 100644 op-mode-definitions/counters.xml.in delete mode 100644 op-mode-definitions/wireless.xml.in diff --git a/op-mode-definitions/counters.xml.in b/op-mode-definitions/counters.xml.in new file mode 100644 index 000000000..4bf08d201 --- /dev/null +++ b/op-mode-definitions/counters.xml.in @@ -0,0 +1,598 @@ + + + + + + + + + Clear interface counters for all interfaces + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters + + + + Clear Bonding interface information + + + + + Clear all bonding interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given bonding interface + + + + + + + + Clear interface counters for a given bonding interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Bridge interface information + + + + + Clear all bridge interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given bridge interface + + + + + + + + Clear interface counters for a given bridge interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Dummy interface information + + + + + Clear all dummy interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given dummy interface + + + + + + + + Clear interface counters for a given dummy interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Ethernet interface information + + + + + Clear all ethernet interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given ethernet interface + + + + + + + + Clear interface counters for a given ethernet interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear GENEVE interface information + + + + + Clear all GENEVE interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given GENEVE interface + + + + + + + + Clear interface counters for a given GENEVE interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Input (ifb) interface information + + + + + Clear all Input interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given Input interface + + + + + + + + Clear interface counters for a given Input interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear L2TPv3 interface information + + + + + Clear all L2TPv3 interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given L2TPv3 interface + + + + + + + + Clear interface counters for a given L2TPv3 interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Loopback interface information + + + + + Clear all loopback interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given loopback interface + + + + + + + + Clear interface counters for a given loopback interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear MACsec interface information + + + + + Clear all MACsec interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given MACsec interface + + + + + + + + Clear interface counters for a given MACsec interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear OpenVPN interface information + + + + + Clear all OpenVPN interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given OpenVPN interface + + + + + + + + Clear interface counters for a given OpenVPN interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear PPPoE interface information + + + + + Clear all PPPoE interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given PPPoE interface + + + + + + + + Clear interface counters for a given PPPoE interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Pseudo-Ethernet/MACvlan interface information + + + + + Clear all Pseudo-Ethernet interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given Pseudo-Ethernet interface + + + + + + + + Clear interface counters for a given Pseudo-Ethernet interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear SSTP interface information + + + + + Clear all SSTP interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given SSTP interface + + + + + + + + Clear interface counters for a given SSTP interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Tunnel interface information + + + + + Clear all tunnel interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given tunnel interface + + + + + + + + Clear interface counters for a given tunnel interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear virtual-ethernet interface information + + + + + Clear all virtual-ethernet interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given virtual-ethernet interface + + + + + + + + Clear interface counters for a given virtual-ethernet interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear VTI interface information + + + + + Clear all VTI interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given VTI interface + + + + + + + + Clear interface counters for a given VTI interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear VXLAN interface information + + + + + Clear all VXLAN interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given VXLAN interface + + + + + + + + Clear interface counters for a given VXLAN interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Wireguard interface information + + + + + Clear all Wireguard interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given Wireguard interface + + + + + + + + Clear interface counters for a given Wireguard interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Wireless (WLAN) interface information + + + + + Clear all wireless interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given wireless interface + + + + + + + + Clear counters for a given wireless interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + Clear Wireless Modem (WWAN) interface information + + + + + Clear all WWAN interface counters + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_type "$3" + + + + + + Clear interface information for a given WWAN interface + + + + + + + + Clear counters for a given WWAN interface + + sudo ${vyos_op_scripts_dir}/interfaces.py clear_counters --intf_name "$4" + + + + + + + + + diff --git a/op-mode-definitions/wireless.xml.in b/op-mode-definitions/wireless.xml.in deleted file mode 100644 index 25809e0b8..000000000 --- a/op-mode-definitions/wireless.xml.in +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - Clear wireless interface information - - - - - Clear all wireless interface counters - - sudo ${vyos_op_scripts_dir}/show_interfaces.py --action=clear --intf-type="$3" - - - - - - Clear interface information for a given wireless interface - - - - - - - - Clear all wireless interface counters - - sudo ${vyos_op_scripts_dir}/show_interfaces.py --action=clear --intf="$4" - - - - - - - - -- cgit v1.2.3