From 18031ddd72ddcb56cd420da1e70cc9d73a7882f3 Mon Sep 17 00:00:00 2001 From: mlok Date: Sun, 23 Apr 2023 16:25:51 -0400 Subject: [PATCH 1/2] [chassis][lldp] Fix the lldp error log in host instance which doesn't contain front pannel ports Signed-off-by: mlok --- dockers/docker-lldp/lldpmgrd | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dockers/docker-lldp/lldpmgrd b/dockers/docker-lldp/lldpmgrd index 6d8540bf2613..f65877b75c9f 100755 --- a/dockers/docker-lldp/lldpmgrd +++ b/dockers/docker-lldp/lldpmgrd @@ -23,6 +23,8 @@ try: from sonic_py_common import daemon_base from swsscommon import swsscommon from sonic_py_common.interface import inband_prefix, recirc_prefix + from sonic_py_common import device_info + except ImportError as err: raise ImportError("%s - required module not found" % str(err)) @@ -267,6 +269,15 @@ class LldpManager(daemon_base.DaemonBase): elif key == "PortConfigDone": self.port_config_done = True + def appdb_contains_lldp_port(self): + if device_info.is_supervisor(): + return False + if device_info.is_multi_npu(): + namespace_id = os.getenv("NAMESPACE_ID") + if not namespace_id: + return False + return True + def run(self): """ Subscribes to notifications of changes in the PORT table @@ -357,7 +368,8 @@ def run_cmd(self, cmd): def check_timeout(self, start_time): if time.time() - start_time > PORT_INIT_TIMEOUT: - self.log_error("Port init timeout reached ({} seconds), resuming lldpd...".format(PORT_INIT_TIMEOUT)) + if self.appdb_contains_lldp_port(): + self.log_error("Port init timeout reached ({} seconds), resuming lldpd...".format(PORT_INIT_TIMEOUT)) return True return False From e126e370a8a5e290b75e009f2963edbc88965a38 Mon Sep 17 00:00:00 2001 From: mlok Date: Sat, 3 Jun 2023 16:14:48 -0400 Subject: [PATCH 2/2] [lldpmgrd] Address the review comment --- dockers/docker-lldp/lldpmgrd | 11 +---------- src/sonic-py-common/sonic_py_common/device_info.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/dockers/docker-lldp/lldpmgrd b/dockers/docker-lldp/lldpmgrd index f65877b75c9f..2dad02f8794c 100755 --- a/dockers/docker-lldp/lldpmgrd +++ b/dockers/docker-lldp/lldpmgrd @@ -269,15 +269,6 @@ class LldpManager(daemon_base.DaemonBase): elif key == "PortConfigDone": self.port_config_done = True - def appdb_contains_lldp_port(self): - if device_info.is_supervisor(): - return False - if device_info.is_multi_npu(): - namespace_id = os.getenv("NAMESPACE_ID") - if not namespace_id: - return False - return True - def run(self): """ Subscribes to notifications of changes in the PORT table @@ -368,7 +359,7 @@ def run_cmd(self, cmd): def check_timeout(self, start_time): if time.time() - start_time > PORT_INIT_TIMEOUT: - if self.appdb_contains_lldp_port(): + if device_info.is_frontend_port_present_in_host(): self.log_error("Port init timeout reached ({} seconds), resuming lldpd...".format(PORT_INIT_TIMEOUT)) return True return False diff --git a/src/sonic-py-common/sonic_py_common/device_info.py b/src/sonic-py-common/sonic_py_common/device_info.py index f7b1beb75de1..f844c55e84e3 100644 --- a/src/sonic-py-common/sonic_py_common/device_info.py +++ b/src/sonic-py-common/sonic_py_common/device_info.py @@ -713,3 +713,13 @@ def is_fast_reboot_enabled(): state_db.close(state_db.STATE_DB) return fb_enable_state + + +def is_frontend_port_present_in_host(): + if is_supervisor(): + return False + if is_multi_npu(): + namespace_id = os.getenv("NAMESPACE_ID") + if not namespace_id: + return False + return True