Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ansible/config_sonic_basedon_testbed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,7 @@
generate_golden_config_db:
topo_name: "{{ topo }}"
port_index_map: "{{ port_index_map | default({}) }}"
hwsku: "{{ hwsku }}"
become: true

- name: Copy macsec profile json to dut
Expand Down
31 changes: 30 additions & 1 deletion ansible/library/generate_golden_config_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,27 @@
logger = logging.getLogger(__name__)


def is_full_lossy_hwsku(hwsku):
lossy_hwsku = {'Arista-7060X6-64PE-C256S2', 'Arista-7060X6-64PE-C224O8',
'Mellanox-SN5600-C256S1', 'Mellanox-SN5600-C224O8',
'Arista-7060X6-64PE-B-C512S2', 'Arista-7060X6-64PE-B-C448O16',
'Mellanox-SN5640-C512S2', 'Mellanox-SN5640-C448O16'}
return hwsku in lossy_hwsku


class GenerateGoldenConfigDBModule(object):
def __init__(self):
self.module = AnsibleModule(argument_spec=dict(topo_name=dict(required=True, type='str'),
port_index_map=dict(require=False, type='dict', default=None),
macsec_profile=dict(require=False, type='str', default=None),
num_asics=dict(require=False, type='int', default=1)),
num_asics=dict(require=False, type='int', default=1),
hwsku=dict(require=False, type='str', default=None)),
supports_check_mode=True)
self.topo_name = self.module.params['topo_name']
self.port_index_map = self.module.params['port_index_map']
self.macsec_profile = self.module.params['macsec_profile']
self.num_asics = self.module.params['num_asics']
self.hwsku = self.module.params['hwsku']

def generate_mgfx_golden_config_db(self):
rc, out, err = self.module.run_command("sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --print-data")
Expand Down Expand Up @@ -107,6 +117,23 @@ def generate_mx_golden_config_db(self):
gold_config_db.update(dhcp_server_config_obj)
return gold_config_db

def generate_full_lossy_golden_config_db(self):
rc, out, err = self.module.run_command("sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --print-data")
if rc != 0:
self.module.fail_json(msg="Failed to get config from minigraph: {}".format(err))

# Generate config table from init_cfg.ini
ori_config_db = json.loads(out)

golden_config_db = {}
if "DEVICE_METADATA" in ori_config_db:
golden_config_db["DEVICE_METADATA"] = ori_config_db["DEVICE_METADATA"]
if ("localhost" in golden_config_db["DEVICE_METADATA"] and
"default_pfcwd_status" in golden_config_db["DEVICE_METADATA"]["localhost"]):
golden_config_db["DEVICE_METADATA"]["localhost"]["default_pfcwd_status"] = "disable"

return json.dumps(golden_config_db, indent=4)

def check_version_for_bmp(self):
output_version = device_info.get_sonic_version_info()
build_version = output_version['build_version']
Expand Down Expand Up @@ -356,6 +383,8 @@ def generate(self):
config = self.generate_t2_golden_config_db()
self.module.run_command("sudo rm -f {}".format(MACSEC_PROFILE_PATH))
self.module.run_command("sudo rm -f {}".format(GOLDEN_CONFIG_TEMPLATE_PATH))
elif 'isolated' in self.topo_name and is_full_lossy_hwsku(self.hwsku):
config = self.generate_full_lossy_golden_config_db()
else:
config = "{}"

Expand Down
Loading