diff --git a/dockers/docker-lldp-sv2/lldpd.conf.j2 b/dockers/docker-lldp-sv2/lldpd.conf.j2 index 4a6e3b578bb2..d5b6dba8700c 100644 --- a/dockers/docker-lldp-sv2/lldpd.conf.j2 +++ b/dockers/docker-lldp-sv2/lldpd.conf.j2 @@ -9,3 +9,4 @@ configure ports eth0 lldp portidsubtype local {{ mgmt_port_name }} {% endif %} configure system ip management pattern {{ ipv4 }} {% endif %} +configure system hostname {{ DEVICE_METADATA['localhost']['hostname'] }} diff --git a/dockers/docker-lldp-sv2/lldpmgrd b/dockers/docker-lldp-sv2/lldpmgrd index 769bb3f2956b..7d2528a9d3a6 100755 --- a/dockers/docker-lldp-sv2/lldpmgrd +++ b/dockers/docker-lldp-sv2/lldpmgrd @@ -73,17 +73,12 @@ def signal_handler(sig, frame): # ========================== Helpers ================================== -def is_port_up(port_name): - filename = "/sys/class/net/%s/operstate" % port_name +def is_port_exist(port_name): + filename = "/sys/class/net/%s/ifindex" % port_name if not os.path.exists(filename): return False - with open(filename) as fp: - state = fp.read() - if 'up' in state: - return True - else: - return False + return True # ============================== Classes ============================== @@ -159,8 +154,8 @@ class LldpManager(object): to_delete = [] for (port_name, cmd) in self.pending_cmds.iteritems(): - if not is_port_up(port_name): - # it doesn't make any sense to configure lldpd if the target port is unavailable + if not is_port_exist(port_name): + # it doesn't make any sense to configure lldpd if the target port does not exist # let's postpone the command for the next iteration continue diff --git a/dockers/docker-lldp-sv2/start.sh b/dockers/docker-lldp-sv2/start.sh index adc322979813..76666e77aca2 100755 --- a/dockers/docker-lldp-sv2/start.sh +++ b/dockers/docker-lldp-sv2/start.sh @@ -10,8 +10,6 @@ rm -f /var/run/lldpd.socket supervisorctl start rsyslogd supervisorctl start lldpd -supervisorctl start lldp-syncd -supervisorctl start lldpmgrd # Current lldpd version has a bug. # When lldpd starts it is in the pause state by default @@ -35,3 +33,6 @@ do lldpcli -u /var/run/lldpd.socket -c /etc/lldpd.conf -c /etc/lldpd.d resume > /dev/null && break sleep 1 done + +supervisorctl start lldp-syncd +supervisorctl start lldpmgrd diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index e8f91f1f4c9c..461b76acac03 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -538,10 +538,14 @@ def parse_xml(filename, platform=None, port_config_file=None): ports.setdefault(port_name, {})['description'] = port_descriptions[port_name] - # for the ports w/o description set it to alias, or port name for port_name, port in ports.items(): if not port.get('description'): - port['description'] = port.get('alias', port_name) + if neighbors.has_key(port_name): + # for the ports w/o description set it to neighbor name:port + port['description'] = "%s:%s" % (neighbors[port_name]['name'], neighbors[port_name]['port']) + else: + # for the ports w/o neighbor info, set it to port alias + port['description'] = port.get('alias', port_name) # set default port MTU as 9100 for port in ports.itervalues(): diff --git a/src/sonic-config-engine/tests/sample_output/lldpd.conf b/src/sonic-config-engine/tests/sample_output/lldpd.conf index 6320502ff88e..d28ec8418362 100644 --- a/src/sonic-config-engine/tests/sample_output/lldpd.conf +++ b/src/sonic-config-engine/tests/sample_output/lldpd.conf @@ -1,3 +1,3 @@ configure ports eth0 lldp portidsubtype local eth0 configure system ip management pattern 10.0.0.100 - +configure system hostname switch-t0 diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index eab5d6c7deae..1141419392c1 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -151,6 +151,11 @@ def test_minigraph_extra_neighbors(self): "'Ethernet112': {'name': 'ARISTA01T1', 'port': 'Ethernet1/1'}, " "'Ethernet120': {'name': 'ARISTA03T1', 'port': 'Ethernet1/1'}}") + def test_minigraph_port_description(self): + argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"' + output = self.run_script(argument) + self.assertEqual(output.strip(), "{'alias': 'fortyGigE0/124', 'admin_status': 'up', 'lanes': '101,102,103,104', 'description': 'ARISTA04T1:Ethernet1/1', 'mtu': '9100'}") + def test_minigraph_bgp(self): argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v "BGP_NEIGHBOR[\'10.0.0.59\']"' output = self.run_script(argument) diff --git a/src/sonic-dbsyncd b/src/sonic-dbsyncd index 1cdcffc08f6e..fe60afa7e24a 160000 --- a/src/sonic-dbsyncd +++ b/src/sonic-dbsyncd @@ -1 +1 @@ -Subproject commit 1cdcffc08f6ea1c3fc53f7aeeef5b5632124496f +Subproject commit fe60afa7e24a7053a7bd9d7084268c1bbd203208