diff --git a/ansible/library/lag_facts.py b/ansible/library/lag_facts.py index d005e7fd79..c7e710b513 100644 --- a/ansible/library/lag_facts.py +++ b/ansible/library/lag_facts.py @@ -3,6 +3,7 @@ import json import sys from ansible.module_utils.basic import * +from ansible.module_utils.multi_asic_utils import load_db_config try: from sonic_py_common import multi_asic NAMESPACE_LIST = multi_asic.get_namespace_list() @@ -63,6 +64,8 @@ def get_po_names(self): ''' Collect configured lag interface names ''' + # load db config + load_db_config() for ns in NAMESPACE_LIST: rt, out, err = self.module.run_command("sonic-cfggen -m /etc/sonic/minigraph.xml {} -v \"PORTCHANNEL.keys() | join(' ')\"".format('-n ' + ns if ns else '')) if rt != 0: diff --git a/ansible/module_utils/multi_asic_utils.py b/ansible/module_utils/multi_asic_utils.py new file mode 100644 index 0000000000..5db3146034 --- /dev/null +++ b/ansible/module_utils/multi_asic_utils.py @@ -0,0 +1,22 @@ +def load_db_config(): + ''' + Load the correct database config file: + - database_global.json for multi asic + - database_config.json for single asic + Loading database config file is not required for + 201911 images so ignore import error or function + name error. + ''' + try: + from sonic_py_common import multi_asic + from swsscommon import swsscommon + if multi_asic.is_multi_asic(): + if not swsscommon.SonicDBConfig.isGlobalInit(): + swsscommon.SonicDBConfig.load_sonic_global_db_config() + else: + if not swsscommon.SonicDBConfig.isInit(): + swsscommon.SonicDBConfig.load_sonic_db_config() + except ImportError: + pass + except NameError: + pass diff --git a/ansible/module_utils/port_utils.py b/ansible/module_utils/port_utils.py index f152461002..1fef141c3a 100644 --- a/ansible/module_utils/port_utils.py +++ b/ansible/module_utils/port_utils.py @@ -15,6 +15,8 @@ def _port_alias_to_name_map_50G(all_ports, s100G_ports,): def get_port_alias_to_name_map(hwsku, asic_id=None): try: from sonic_py_common import multi_asic + from ansible.module_utils.multi_asic_utils import load_db_config + load_db_config() namespace_list = multi_asic.get_all_namespaces() for key, list in namespace_list.items(): asic_ids = []