diff --git a/dockers/docker-config-engine/Dockerfile.j2 b/dockers/docker-config-engine/Dockerfile.j2 index b4d924bddf..bc82e1ca28 100644 --- a/dockers/docker-config-engine/Dockerfile.j2 +++ b/dockers/docker-config-engine/Dockerfile.j2 @@ -5,8 +5,8 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -# Dependencies for sonic-cfggen -RUN apt-get install -y python-lxml python-yaml python-bitarray python-pip python-dev +# Dependencies for sonic-cfggen +RUN apt-get install -y python-lxml python-yaml python-bitarray python-pip python-dev python-natsort RUN pip install --upgrade pip diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index 4216425a36..b11385ab8c 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -30,6 +30,8 @@ from sonic_platform import get_machine_info from sonic_platform import get_platform_info from sonic_platform import get_system_mac from swsssdk import ConfigDBConnector +from collections import OrderedDict +from natsort import natsorted def is_ipv4(value): if not value: @@ -99,6 +101,7 @@ TODO(taoyl): Current version of config db only supports BGP admin states. def to_serialized(data): for table in data: if type(data[table]) is dict: + data[table] = OrderedDict(natsorted(data[table].items())) for key in data[table].keys(): new_key = ConfigDBConnector.serialize_key(key) if new_key != key: