diff --git a/src/lldp_syncd/daemon.py b/src/lldp_syncd/daemon.py index 442b678..636393f 100644 --- a/src/lldp_syncd/daemon.py +++ b/src/lldp_syncd/daemon.py @@ -124,7 +124,13 @@ def get_sys_capability_list(self, if_attributes, if_name, chassis_id): if 'capability' in if_attributes['chassis']: capability_list = if_attributes['chassis']['capability'] else: - capability_list = list(if_attributes['chassis'].values())[0]['capability'] + for attribute in if_attributes['chassis'].values(): + if 'capability' in attribute: + capability_list = attribute['capability'] + break + else: + capability_list = [] + # {'enabled': ..., 'type': 'capability'} if isinstance(capability_list, dict): capability_list = [capability_list] diff --git a/tests/subproc_outputs/interface_only.json b/tests/subproc_outputs/interface_only.json index 14f0b5b..1516758 100644 --- a/tests/subproc_outputs/interface_only.json +++ b/tests/subproc_outputs/interface_only.json @@ -44,6 +44,29 @@ ] } }, + { + "Ethernet1": { + "via": "LLDP", + "rid": "8", + "age": "0 day, 00:00:01", + "chassis": { + "id": { + "type": "local", + "value": "55663150-3630-2543-4A30-323230424734" + }, + "descr": "I'm a little teapot.", + "mgmt-ip": "0.0.0.0" + }, + "port": { + "id": { + "type": "mac", + "value": "cc:12:33:44:55:66" + }, + "descr": "PCI-E Slot 3, Port 1", + "ttl": "100" + } + } + }, { "Ethernet100": { "rid": "1", diff --git a/tests/test_lldpSyncDaemon.py b/tests/test_lldpSyncDaemon.py index b811fd2..acbf282 100644 --- a/tests/test_lldpSyncDaemon.py +++ b/tests/test_lldpSyncDaemon.py @@ -135,4 +135,8 @@ def test_remote_sys_capability_list(self): for interface in interface_list: (if_name, if_attributes), = interface.items() capability_list = self.daemon.get_sys_capability_list(if_attributes, if_name, "fake_chassis_id") - self.assertNotEqual(capability_list, []) + if if_name == 'Ethernet1': + self.assertEqual(capability_list, []) + else: + self.assertNotEqual(capability_list, []) +