From 95cfcaa2fe723036d435da81f02138f71bcb00c4 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Fri, 31 Jan 2025 13:03:01 +0100 Subject: [PATCH] confd: refactor dhcp server counters Counters should follow the format from ieee802-ethernet-interface model, which use: - in/out for Rx/Tx - plural from Signed-off-by: Joachim Wiberg --- src/confd/yang/infix-dhcp-server.yang | 68 +++++++++----------- src/statd/python/cli_pretty/cli_pretty.py | 33 +++++----- src/statd/python/yanger/infix_dhcp_server.py | 20 +++--- 3 files changed, 55 insertions(+), 66 deletions(-) diff --git a/src/confd/yang/infix-dhcp-server.yang b/src/confd/yang/infix-dhcp-server.yang index 5c99d72a..8bf0e78f 100644 --- a/src/confd/yang/infix-dhcp-server.yang +++ b/src/confd/yang/infix-dhcp-server.yang @@ -309,46 +309,38 @@ module infix-dhcp-server { description "DHCP packet statistics."; config false; - container sent { - description "The packets sent by the server."; - - leaf offer-count { - type yang:counter32; - description "Total number of DHCPOFFER packets."; - } - leaf ack-count { - type yang:counter32; - description "Total number of DHCPACK packets."; - } - leaf nak-count { - type yang:counter32; - description "Total number of DHCPNAK packets."; - } + leaf out-offers { + type yang:counter32; + description "Total number of DHCPOFFER packets."; + } + leaf out-acks { + type yang:counter32; + description "Total number of DHCPACK packets."; + } + leaf out-naks { + type yang:counter32; + description "Total number of DHCPNAK packets."; } - container received { - description "The packets sent by the client."; - - leaf decline-count { - type yang:counter32; - description "Total number of DHCPDECLINE packets."; - } - leaf discover-count { - type yang:counter32; - description "Total number of DHCPDISCOVER packets."; - } - leaf request-count { - type yang:counter32; - description "Total number of DHCPREQUEST packets."; - } - leaf release-count { - type yang:counter32; - description "Total number of DHCPRELEASE packets."; - } - leaf inform-count { - type yang:counter32; - description "Total number of DHCPINFORM packets."; - } + leaf in-declines { + type yang:counter32; + description "Total number of DHCPDECLINE packets."; + } + leaf in-discovers { + type yang:counter32; + description "Total number of DHCPDISCOVER packets."; + } + leaf in-requests { + type yang:counter32; + description "Total number of DHCPREQUEST packets."; + } + leaf in-releases { + type yang:counter32; + description "Total number of DHCPRELEASE packets."; + } + leaf in-informs { + type yang:counter32; + description "Total number of DHCPINFORM packets."; } action clear { diff --git a/src/statd/python/cli_pretty/cli_pretty.py b/src/statd/python/cli_pretty/cli_pretty.py index f5541cf6..4d278b78 100755 --- a/src/statd/python/cli_pretty/cli_pretty.py +++ b/src/statd/python/cli_pretty/cli_pretty.py @@ -375,15 +375,16 @@ class DhcpServer: "host": lease["hostname"], "exp": exp }) + stats = get_json_data([], self.data, 'statistics') - self.offers = stats["sent"]["offer-count"] - self.acks = stats["sent"]["ack-count"] - self.naks = stats["sent"]["nak-count"] - self.declines = stats["received"]["decline-count"] - self.discovers = stats["received"]["discover-count"] - self.requests = stats["received"]["request-count"] - self.releases = stats["received"]["release-count"] - self.informs = stats["received"]["inform-count"] + self.out_offers = stats["out-offers"] + self.out_acks = stats["out-acks"] + self.out_naks = stats["out-naks"] + self.in_declines = stats["in-declines"] + self.in_discovers = stats["in-discovers"] + self.in_requests = stats["in-requests"] + self.in_releases = stats["in-releases"] + self.in_informs = stats["in-informs"] def format_duration(self, seconds): """Convert seconds to DDdHHhMMmSSs format, omitting zero values""" @@ -421,14 +422,14 @@ class DhcpServer: print(row) def print_stats(self): - print(f"{'DHCP offers sent':<{32}}: {self.offers}") - print(f"{'DHCP ACK messages sent':<{32}}: {self.acks}") - print(f"{'DHCP NAK messages sent':<{32}}: {self.naks}") - print(f"{'DHCP decline messages received':<{32}}: {self.declines}") - print(f"{'DHCP discover messages received':<{32}}: {self.discovers}") - print(f"{'DHCP request messages received':<{32}}: {self.requests}") - print(f"{'DHCP release messages received':<{32}}: {self.discovers}") - print(f"{'DHCP inform messages received':<{32}}: {self.discovers}") + print(f"{'DHCP offers sent':<{32}}: {self.out_offers}") + print(f"{'DHCP ACK messages sent':<{32}}: {self.out_acks}") + print(f"{'DHCP NAK messages sent':<{32}}: {self.out_naks}") + print(f"{'DHCP decline messages received':<{32}}: {self.in_declines}") + print(f"{'DHCP discover messages received':<{32}}: {self.in_discovers}") + print(f"{'DHCP request messages received':<{32}}: {self.in_requests}") + print(f"{'DHCP release messages received':<{32}}: {self.in_discovers}") + print(f"{'DHCP inform messages received':<{32}}: {self.in_discovers}") class Iface: diff --git a/src/statd/python/yanger/infix_dhcp_server.py b/src/statd/python/yanger/infix_dhcp_server.py index 04bb5b3c..3c90d6d4 100755 --- a/src/statd/python/yanger/infix_dhcp_server.py +++ b/src/statd/python/yanger/infix_dhcp_server.py @@ -70,18 +70,14 @@ def statistics(): } return { - "sent": { - "offer-count": metrics["dhcp_offer"], - "ack-count": metrics["dhcp_ack"], - "nak-count": metrics["dhcp_nak"] - }, - "received": { - "decline-count": metrics["dhcp_decline"], - "discover-count": metrics["dhcp_discover"], - "request-count": metrics["dhcp_request"], - "release-count": metrics["dhcp_release"], - "inform-count": metrics["dhcp_inform"] - } + "out-offers": metrics["dhcp_offer"], + "out-acks": metrics["dhcp_ack"], + "out-naks": metrics["dhcp_nak"], + "in-declines": metrics["dhcp_decline"], + "in-discovers": metrics["dhcp_discover"], + "in-requests": metrics["dhcp_request"], + "in-releases": metrics["dhcp_release"], + "in-informs": metrics["dhcp_inform"] }