From 6f0b05978dd565936c800866194294aab0ec54e7 Mon Sep 17 00:00:00 2001 From: Mai Bui Date: Thu, 17 Nov 2022 08:02:57 -0500 Subject: [PATCH 01/19] [sonic-config-engine] Replace os.system, replace yaml.load, remove subprocess with shell=True (#12607) Signed-off-by: maipbui #### Why I did it Missing import statement in PR https://github.com/sonic-net/sonic-buildimage/pull/12533 #### How I did it Revert [PR 12646](https://github.com/sonic-net/sonic-buildimage/pull/12616) Add import statement 1. https://github.com/sonic-net/sonic-buildimage/blob/31f7afa92e8d1e353ef2f3b004711dd18c0d94f6/src/sonic-config-engine/tests/test_j2files_t2_chassis_fe.py#L8 2. https://github.com/sonic-net/sonic-buildimage/blob/31f7afa92e8d1e353ef2f3b004711dd18c0d94f6/src/sonic-config-engine/tests/test_j2files.py#L8 3. https://github.com/sonic-net/sonic-buildimage/blob/31f7afa92e8d1e353ef2f3b004711dd18c0d94f6/src/sonic-config-engine/tests/test_multinpu_cfggen.py#L11 #### How to verify it Pass UT --- src/sonic-config-engine/sonic-cfggen | 2 +- src/sonic-config-engine/tests/common_utils.py | 21 +- src/sonic-config-engine/tests/test_cfggen.py | 202 +++++++++--------- .../tests/test_cfggen_from_yang.py | 54 +++-- .../tests/test_cfggen_pfx_filter.py | 13 +- .../tests/test_cfggen_platformJson.py | 26 +-- .../tests/test_cfggen_t2_chassis_fe.py | 21 +- src/sonic-config-engine/tests/test_frr.py | 26 ++- src/sonic-config-engine/tests/test_j2files.py | 167 +++++++-------- .../tests/test_j2files_t2_chassis_fe.py | 21 +- .../tests/test_minigraph_case.py | 95 ++++---- .../tests/test_multinpu_cfggen.py | 118 +++++----- 12 files changed, 379 insertions(+), 387 deletions(-) diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index d5358f633dbf..287640d8a119 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -351,7 +351,7 @@ def main(): if yaml.__version__ >= "5.1": additional_data = yaml.full_load(stream) else: - additional_data = yaml.load(stream) + additional_data = yaml.safe_load(stream) deep_update(data, FormatConverter.to_deserialized(additional_data)) if args.additional_data is not None: diff --git a/src/sonic-config-engine/tests/common_utils.py b/src/sonic-config-engine/tests/common_utils.py index 72325ecbc1e0..d2be32c8544d 100644 --- a/src/sonic-config-engine/tests/common_utils.py +++ b/src/sonic-config-engine/tests/common_utils.py @@ -5,7 +5,6 @@ import sys import subprocess import argparse -import shlex PY3x = sys.version_info >= (3, 0) PYvX_DIR = "py3" if PY3x else "py2" @@ -47,7 +46,7 @@ def __init__(self, path=YANG_MODELS_DIR): self.yang_parser = sonic_yang.SonicYang(path) self.yang_parser.loadYangModel() self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] def validate(self, argument): """ @@ -62,22 +61,22 @@ def validate(self, argument): parser.add_argument("-p", "--port-config", help="port config file, used with -m or -k", nargs='?', const=None) parser.add_argument("-S", "--hwsku-config", help="hwsku config file, used with -p and -m or -k", nargs='?', const=None) parser.add_argument("-j", "--json", help="additional json file input, used with -p, -S and -m or -k", nargs='?', const=None) - args, unknown = parser.parse_known_args(shlex.split(argument)) + args, unknown = parser.parse_known_args(argument) print('\n Validating yang schema') - cmd = self.script_file + ' -m ' + args.minigraph + cmd = self.script_file + ['-m', args.minigraph] if args.hwsku is not None: - cmd += ' -k ' + args.hwsku + cmd += ['-k', args.hwsku] if args.hwsku_config is not None: - cmd += ' -S ' + args.hwsku_config + cmd += ['-S', args.hwsku_config] if args.port_config is not None: - cmd += ' -p ' + args.port_config + cmd += ['-p', args.port_config] if args.namespace is not None: - cmd += ' -n ' + args.namespace + cmd += ['-n', args.namespace] if args.json is not None: - cmd += ' -j ' + args.json - cmd += ' --print-data' - output = subprocess.check_output(cmd, shell=True).decode() + cmd += ['-j', args.json] + cmd += ['--print-data'] + output = subprocess.check_output(cmd).decode() try: self.yang_parser.loadData(configdbJson=json.loads(output)) self.yang_parser.validate_data_tree() diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 6279a7bfbd89..d1d5b898b4ff 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -1,7 +1,6 @@ import json import subprocess import os - import tests.common_utils as utils from unittest import TestCase @@ -16,7 +15,7 @@ class TestCfgGen(TestCase): def setUp(self): self.yang = utils.YangWrapper() self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.sample_graph = os.path.join(self.test_dir, 'sample_graph.xml') self.sample_graph_t0 = os.path.join(self.test_dir, 't0-sample-graph.xml') self.sample_graph_simple = os.path.join(self.test_dir, 'simple-sample-graph.xml') @@ -52,13 +51,12 @@ def tearDown(self): pass def run_script(self, argument, check_stderr=False, verbose=False): - print('\n Running sonic-cfggen ' + argument) + print('\n Running sonic-cfggen ' + ' '.join(argument)) self.assertTrue(self.yang.validate(argument)) - if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() @@ -73,52 +71,52 @@ def run_script(self, argument, check_stderr=False, verbose=False): return output def test_dummy_run(self): - argument = '' + argument = [] output = self.run_script(argument) self.assertEqual(output, '') def test_device_desc(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'hwsku\']" -M "' + self.sample_device_desc + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'hwsku\']", "-M", self.sample_device_desc] output = self.run_script(argument) self.assertEqual(output.strip(), 'ACS-MSN2700') def test_device_desc_mgmt_ip(self): - argument = '-v "(MGMT_INTERFACE.keys()|list)[0]" -M "' + self.sample_device_desc + '"' + argument = ['-v', "(MGMT_INTERFACE.keys()|list)[0]", '-M', self.sample_device_desc] output = self.run_script(argument) self.assertEqual(output.strip(), "('eth0', '10.0.1.5/28')") def test_minigraph_hostname(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'hostname\']" -m "' + self.sample_graph + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'hostname\']", '-m', self.sample_graph, "-p", self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'OCPSCH01040DDLF') def test_minigraph_sku(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'hwsku\']" -m "' + self.sample_graph + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'hwsku\']", '-m', self.sample_graph, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'Force10-Z9100') def test_minigraph_region(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'region\']" -m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'region\']", '-m', self.sample_graph_metadata, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'usfoo') def test_minigraph_cloudtype(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'cloudtype\']" -m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'cloudtype\']", '-m', self.sample_graph_metadata, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'Public') def test_minigraph_resourcetype(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'resource_type\']" -m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'resource_type\']", '-m', self.sample_graph_metadata, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'resource_type_x') def test_minigraph_downstream_subrole(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'downstream_subrole\']" -m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'downstream_subrole\']", '-m', self.sample_graph_metadata, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'downstream_subrole_y') def test_print_data(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" --print-data' + argument = ['-m', self.sample_graph, '-p', self.port_config, '--print-data'] output = self.run_script(argument) self.assertTrue(len(output.strip()) > 0) @@ -127,29 +125,29 @@ def test_jinja_expression(self, graph=None, port_config=None, expected_router_ty graph = self.sample_graph if port_config is None: port_config = self.port_config - argument = '-m "' + graph + '" -p "' + port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'type\']"' + argument = ['-m', graph, '-p', port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'type\']"] output = self.run_script(argument) self.assertEqual(output.strip(), expected_router_type) def test_additional_json_data(self): - argument = '-a \'{"key1":"value1"}\' -v key1' + argument = ['-a', '{"key1":"value1"}', '-v', 'key1'] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1') def test_additional_json_data_level1_key(self): - argument = '-a \'{"k1":{"k11":"v11","k12":"v12"}, "k2":{"k22":"v22"}}\' --var-json k1' + argument = ['-a', '{"k1":{"k11":"v11","k12":"v12"}, "k2":{"k22":"v22"}}', '--var-json', 'k1'] output = self.run_script(argument) self.assertEqual(utils.to_dict(output.strip()), utils.to_dict('{\n "k11": "v11", \n "k12": "v12"\n}')) def test_additional_json_data_level2_key(self): - argument = '-a \'{"k1":{"k11":"v11","k12":"v12"},"k2":{"k22":"v22"}}\' --var-json k1 -K k11' + argument = ['-a', '{"k1":{"k11":"v11","k12":"v12"},"k2":{"k22":"v22"}}', '--var-json', 'k1', '-K', 'k11'] output = self.run_script(argument) self.assertEqual(utils.to_dict(output.strip()), utils.to_dict('{\n "k11": "v11"\n}')) def test_var_json_data(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) tag_mode = kwargs.get('tag_mode', 'untagged') - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" --var-json VLAN_MEMBER' + argument = ['-m', graph_file, '-p', self.port_config, '--var-json', 'VLAN_MEMBER'] output = self.run_script(argument) if tag_mode == "tagged": self.assertEqual( @@ -175,20 +173,20 @@ def test_var_json_data(self, **kwargs): ) def test_read_yaml(self): - argument = '-v yml_item -y ' + os.path.join(self.test_dir, 'test.yml') + argument = ['-v', 'yml_item', '-y', os.path.join(self.test_dir, 'test.yml')] output = self.run_script(argument) self.assertEqual(output.strip(), '[\'value1\', \'value2\']') def test_render_template(self): - argument = '-y ' + os.path.join(self.test_dir, 'test.yml') + ' -t ' + os.path.join(self.test_dir, 'test.j2') + argument = ['-y', os.path.join(self.test_dir, 'test.yml'), '-t', os.path.join(self.test_dir, 'test.j2')] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1\nvalue2') def test_template_batch_mode(self): - argument = '-y ' + os.path.join(self.test_dir, 'test.yml') - argument += ' -a \'{"key1":"value"}\'' - argument += ' -t ' + os.path.join(self.test_dir, 'test.j2') + ',' + self.output_file - argument += ' -t ' + os.path.join(self.test_dir, 'test2.j2') + ',' + self.output2_file + argument = ['-y', os.path.join(self.test_dir, 'test.yml')] + argument += ['-a', '{"key1":"value"}'] + argument += ['-t', os.path.join(self.test_dir, 'test.j2') + ',' + self.output_file] + argument += ['-t', os.path.join(self.test_dir, 'test2.j2') + ',' + self.output2_file] output = self.run_script(argument) assert(os.path.exists(self.output_file)) assert(os.path.exists(self.output2_file)) @@ -199,10 +197,10 @@ def test_template_batch_mode(self): def test_template_json_batch_mode(self): data = {"key1_1":"value1_1", "key1_2":"value1_2", "key2_1":"value2_1", "key2_2":"value2_2"} - argument = " -a '{0}'".format(repr(data).replace('\'', '"')) - argument += ' -t ' + os.path.join(self.test_dir, 'sample-template-1.json.j2') + ",config-db" - argument += ' -t ' + os.path.join(self.test_dir, 'sample-template-2.json.j2') + ",config-db" - argument += ' --print-data' + argument = ["-a", '{0}'.format(repr(data).replace('\'', '"'))] + argument += ['-t', os.path.join(self.test_dir, 'sample-template-1.json.j2') + ",config-db"] + argument += ['-t', os.path.join(self.test_dir, 'sample-template-2.json.j2') + ",config-db"] + argument += ['--print-data'] output = self.run_script(argument) output_data = json.loads(output) for key, value in data.items(): @@ -212,7 +210,7 @@ def test_template_json_batch_mode(self): # it is not at all intuitive what that ordering should be. Could make it # more robust by adding better parsing logic. def test_minigraph_acl(self): - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v ACL_TABLE' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', 'ACL_TABLE'] output = self.run_script(argument, True, True) self.assertEqual( utils.to_dict(output.strip().replace("Warning: Ignoring Control Plane ACL NTP_ACL without type\n", '')), @@ -236,7 +234,7 @@ def test_minigraph_acl(self): # self.assertEqual(output.strip(), "{'everflow0': {'src_ip': '10.1.0.32', 'dst_ip': '2.2.2.2'}}") def test_minigraph_mgmt_ports(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v MGMT_PORT' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v','MGMT_PORT'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -244,13 +242,13 @@ def test_minigraph_mgmt_ports(self): ) def test_minigraph_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "INTERFACE.keys()|list"' + argument = ['-m', self.sample_graph_simple, '-p', self.port_config, '-v', "INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual(output.strip(), "[('Ethernet0', '10.0.0.58/31'), 'Ethernet0', ('Ethernet0', 'FC00::75/126')]") def test_minigraph_vlans(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v VLAN' + argument = ['-m', graph_file, '-p', self.port_config, '-v', 'VLAN'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -266,7 +264,7 @@ def test_minigraph_vlans(self, **kwargs): def test_minigraph_vlan_members(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) tag_mode = kwargs.get('tag_mode', 'untagged') - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v VLAN_MEMBER' + argument = ['-m', graph_file, '-p', self.port_config, '-v', 'VLAN_MEMBER'] output = self.run_script(argument) if tag_mode == "tagged": self.assertEqual( @@ -293,12 +291,12 @@ def test_minigraph_vlan_members(self, **kwargs): def test_minigraph_vlan_interfaces(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "VLAN_INTERFACE.keys()|list"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "VLAN_INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual(output.strip(), "[('Vlan1000', '192.168.0.1/27'), 'Vlan1000']") def test_minigraph_ecmp_fg_nhg(self): - argument = '-m "' + self.ecmp_graph + '" -p "' + self.mlnx_port_config + '" -v FG_NHG' + argument = ['-m', self.ecmp_graph, '-p', self.mlnx_port_config, '-v', 'FG_NHG'] output = self.run_script(argument) print(output.strip()) self.assertEqual(utils.to_dict(output.strip()), @@ -308,7 +306,7 @@ def test_minigraph_ecmp_fg_nhg(self): )) def test_minigraph_ecmp_members(self): - argument = '-m "' + self.ecmp_graph + '" -p "' + self.mlnx_port_config + '" -v "FG_NHG_MEMBER.keys()|list|sort"' + argument = ['-m', self.ecmp_graph, '-p', self.mlnx_port_config, '-v', "FG_NHG_MEMBER.keys()|list|sort"] output = self.run_script(argument) self.assertEqual(output.strip(), "['200.200.200.1', '200.200.200.10', '200.200.200.2', '200.200.200.3', '200.200.200.4', '200.200.200.5'," " '200.200.200.6', '200.200.200.7', '200.200.200.8', '200.200.200.9', '200:200:200:200::1', '200:200:200:200::10'," @@ -316,7 +314,7 @@ def test_minigraph_ecmp_members(self): " '200:200:200:200::7', '200:200:200:200::8', '200:200:200:200::9']") def test_minigraph_ecmp_neighbors(self): - argument = '-m "' + self.ecmp_graph + '" -p "' + self.mlnx_port_config + '" -v "NEIGH.keys()|list|sort"' + argument = ['-m', self.ecmp_graph, '-p', self.mlnx_port_config, '-v', "NEIGH.keys()|list|sort"] output = self.run_script(argument) self.assertEqual(output.strip(), "['Vlan31|200.200.200.1', 'Vlan31|200.200.200.10', 'Vlan31|200.200.200.2', 'Vlan31|200.200.200.3'," " 'Vlan31|200.200.200.4', 'Vlan31|200.200.200.5', 'Vlan31|200.200.200.6', 'Vlan31|200.200.200.7'," @@ -326,7 +324,7 @@ def test_minigraph_ecmp_neighbors(self): def test_minigraph_portchannels(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v PORTCHANNEL' + argument = ['-m', graph_file, '-p', self.port_config, '-v', 'PORTCHANNEL'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -334,14 +332,14 @@ def test_minigraph_portchannels(self, **kwargs): ) def test_minigraph_portchannel_with_more_member(self): - argument = '-m "' + self.sample_graph_pc_test + '" -p "' + self.port_config + '" -v PORTCHANNEL' + argument = ['-m', self.sample_graph_pc_test, '-p', self.port_config, '-v', 'PORTCHANNEL'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '3', 'members': ['Ethernet112', 'Ethernet116', 'Ethernet120', 'Ethernet124'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}")) def test_minigraph_portchannel_members(self): - argument = '-m "' + self.sample_graph_pc_test + '" -p "' + self.port_config + '" -v "PORTCHANNEL_MEMBER.keys()|list"' + argument = ['-m', self.sample_graph_pc_test, '-p', self.port_config, '-v', "PORTCHANNEL_MEMBER.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -349,7 +347,7 @@ def test_minigraph_portchannel_members(self): ) def test_minigraph_portchannel_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "PORTCHANNEL_INTERFACE.keys()|list"' + argument = ['-m', self.sample_graph_simple, '-p', self.port_config, '-v', "PORTCHANNEL_INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -357,7 +355,7 @@ def test_minigraph_portchannel_interfaces(self): ) def test_minigraph_neighbors(self): - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "DEVICE_NEIGHBOR[\'Ethernet124\']"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', "DEVICE_NEIGHBOR[\'Ethernet124\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -368,7 +366,7 @@ def test_minigraph_neighbors(self): # it is not at all intuitive what that ordering should be. Could make it # more robust by adding better parsing logic. def test_minigraph_extra_neighbors(self): - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v DEVICE_NEIGHBOR' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', 'DEVICE_NEIGHBOR'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -382,7 +380,7 @@ def test_minigraph_extra_neighbors(self): ) def test_minigraph_port_description(self): - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', "PORT[\'Ethernet124\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -391,7 +389,7 @@ def test_minigraph_port_description(self): def test_minigraph_port_fec_disabled(self): # Test for FECDisabled - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet4\']"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', "PORT[\'Ethernet4\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -400,7 +398,7 @@ def test_minigraph_port_fec_disabled(self): def test_minigraph_port_autonegotiation(self): # Test with a port_config.ini file which doesn't have an 'autoneg' column - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', "PORT"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -441,7 +439,7 @@ def test_minigraph_port_autonegotiation(self): ) # Test with a port_config.ini file which has an 'autoneg' column - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config_autoneg + '" -v "PORT"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config_autoneg, '-v', "PORT"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -482,7 +480,7 @@ def test_minigraph_port_autonegotiation(self): ) def test_minigraph_port_rs(self): - argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"' + argument = ['-m', self.sample_graph_t0, '-p', self.port_config, '-v', "PORT[\'Ethernet124\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -490,7 +488,7 @@ def test_minigraph_port_rs(self): ) def test_minigraph_bgp(self): - argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v "BGP_NEIGHBOR[\'10.0.0.59\']"' + argument = ['-m', self.sample_graph_bgp_speaker, '-p', self.port_config, '-v', "BGP_NEIGHBOR[\'10.0.0.59\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -498,7 +496,7 @@ def test_minigraph_bgp(self): ) def test_minigraph_peers_with_range(self): - argument = "-m " + self.sample_graph_bgp_speaker + " -p " + self.port_config + " -v \"BGP_PEER_RANGE.values()|list\"" + argument = ["-m", self.sample_graph_bgp_speaker, "-p", self.port_config, "-v", "BGP_PEER_RANGE.values()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -506,24 +504,24 @@ def test_minigraph_peers_with_range(self): ) def test_minigraph_deployment_id(self): - argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'deployment_id\']"' + argument = ['-m', self.sample_graph_bgp_speaker, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'deployment_id\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "1") def test_minigraph_deployment_id_null(self): - argument = '-m "' + self.sample_graph_deployment_id + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\']"' + argument = ['-m', self.sample_graph_deployment_id, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\']"] output = self.run_script(argument) self.assertNotIn('deployment_id', output.strip()) def test_minigraph_ethernet_interfaces(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet8\']"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "PORT[\'Ethernet8\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict("{'lanes': '37,38,39,40', 'description': 'Interface description', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/8', 'admin_status': 'up', 'speed': '1000', 'tpid': '0x8100'}") ) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet12\']"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "PORT[\'Ethernet12\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -531,7 +529,7 @@ def test_minigraph_ethernet_interfaces(self, **kwargs): ) def test_minigraph_neighbor_interfaces(self): - argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v "PORT"' + argument = ['-m', self.sample_graph_simple_case, '-p', self.port_config, '-v', "PORT"] output = self.run_script(argument) self.assertEqual( @@ -574,7 +572,7 @@ def test_minigraph_neighbor_interfaces(self): def test_minigraph_neighbor_interfaces_config_db(self): # test to check if PORT table is retrieved from config_db - argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v "PORT"' + argument = ['-m', self.sample_graph_simple_case, '-p', self.port_config, '-v', "PORT"] output = self.run_script(argument) self.assertEqual( @@ -617,7 +615,7 @@ def test_minigraph_neighbor_interfaces_config_db(self): def test_minigraph_extra_ethernet_interfaces(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "PORT"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "PORT"] output = self.run_script(argument) self.assertEqual( @@ -665,7 +663,7 @@ def test_minigraph_extra_ethernet_interfaces(self, **kwargs): # self.assertEqual(output.strip(), "{'everflow0': {'src_ip': '10.1.0.32', 'dst_ip': '10.0.100.1'}}") def test_metadata_tacacs(self): - argument = '-m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '" -v "TACPLUS_SERVER"' + argument = ['-m', self.sample_graph_metadata, '-p', self.port_config, '-v', "TACPLUS_SERVER"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -673,24 +671,24 @@ def test_metadata_tacacs(self): ) def test_metadata_ntp(self): - argument = '-m "' + self.sample_graph_metadata + '" -p "' + self.port_config + '" -v "NTP_SERVER"' + argument = ['-m', self.sample_graph_metadata, '-p', self.port_config, '-v', "NTP_SERVER"] output = self.run_script(argument) self.assertEqual(utils.to_dict(output.strip()), utils.to_dict("{'10.0.10.1': {}, '10.0.10.2': {}}")) def test_minigraph_vnet(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "VNET"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "VNET"] output = self.run_script(argument) self.assertEqual(output.strip(), "") def test_minigraph_vxlan(self, **kwargs): graph_file = kwargs.get('graph_file', self.sample_graph_simple) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "VXLAN_TUNNEL"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "VXLAN_TUNNEL"] output = self.run_script(argument) self.assertEqual(output.strip(), "") def test_minigraph_bgp_mon(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "BGP_MONITORS"' + argument = ['-m', self.sample_graph_simple, '-p', self.port_config, '-v', "BGP_MONITORS"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -698,7 +696,7 @@ def test_minigraph_bgp_mon(self): ) def test_minigraph_bgp_voq_chassis_peer(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "BGP_VOQ_CHASSIS_NEIGHBOR[\'10.2.0.21\']"' + argument = ['-m', self.sample_graph_simple, '-p', self.port_config, '-v', "BGP_VOQ_CHASSIS_NEIGHBOR[\'10.2.0.21\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -706,7 +704,7 @@ def test_minigraph_bgp_voq_chassis_peer(self): ) # make sure VoQChassisInternal value of false is honored - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.port_config + '" -v "BGP_VOQ_CHASSIS_NEIGHBOR[\'10.0.0.57\']"' + argument = ['-m', self.sample_graph_simple, '-p', self.port_config, '-v', "BGP_VOQ_CHASSIS_NEIGHBOR[\'10.0.0.57\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "") @@ -726,14 +724,14 @@ def test_minigraph_backend_acl_leaf(self, check_stderr=True): try: print('\n Change device type to %s' % (BACKEND_LEAF_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_LEAF_ROUTER, self.sample_backend_graph), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_LEAF_ROUTER), self.sample_backend_graph], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_LEAF_ROUTER, self.sample_backend_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_LEAF_ROUTER), self.sample_backend_graph]) self.test_jinja_expression(self.sample_backend_graph, self.port_config, BACKEND_LEAF_ROUTER) # ACL_TABLE should contain EVERFLOW related entries - argument = '-m "' + self.sample_backend_graph + '" -p "' + self.port_config + '" -v "ACL_TABLE"' + argument = ['-m', self.sample_backend_graph, '-p', self.port_config, '-v', "ACL_TABLE"] output = self.run_script(argument) sample_output = utils.to_dict(output.strip()).keys() assert 'DATAACL' not in sample_output, sample_output @@ -742,9 +740,9 @@ def test_minigraph_backend_acl_leaf(self, check_stderr=True): finally: print('\n Change device type back to %s' % (TOR_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_LEAF_ROUTER, TOR_ROUTER, self.sample_backend_graph), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_LEAF_ROUTER, TOR_ROUTER), self.sample_backend_graph], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_LEAF_ROUTER, TOR_ROUTER, self.sample_backend_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_LEAF_ROUTER, TOR_ROUTER), self.sample_backend_graph]) self.test_jinja_expression(self.sample_backend_graph, self.port_config, TOR_ROUTER) @@ -752,23 +750,23 @@ def test_minigraph_sub_port_no_vlan_member(self, check_stderr=True): try: print('\n Change device type to %s' % (BACKEND_LEAF_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (LEAF_ROUTER, BACKEND_LEAF_ROUTER, self.sample_graph), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (LEAF_ROUTER, BACKEND_LEAF_ROUTER), self.sample_graph], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (LEAF_ROUTER, BACKEND_LEAF_ROUTER, self.sample_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (LEAF_ROUTER, BACKEND_LEAF_ROUTER), self.sample_graph]) self.test_jinja_expression(self.sample_graph, self.port_config, BACKEND_LEAF_ROUTER) self.verify_no_vlan_member() finally: print('\n Change device type back to %s' % (LEAF_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_LEAF_ROUTER, LEAF_ROUTER, self.sample_graph), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_LEAF_ROUTER, LEAF_ROUTER), self.sample_graph], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_LEAF_ROUTER, LEAF_ROUTER, self.sample_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_LEAF_ROUTER, LEAF_ROUTER), self.sample_graph]) self.test_jinja_expression(self.sample_graph, self.port_config, LEAF_ROUTER) def verify_no_vlan_member(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VLAN_MEMBER"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "VLAN_MEMBER"] output = self.run_script(argument) self.assertEqual(output.strip(), "{}") @@ -786,33 +784,33 @@ def verify_sub_intf(self, **kwargs): try: print('\n Change device type to %s' % (BACKEND_TOR_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_TOR_ROUTER, graph_file), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_TOR_ROUTER), graph_file], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_TOR_ROUTER, graph_file), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_TOR_ROUTER), graph_file]) self.test_jinja_expression(graph_file, self.port_config, BACKEND_TOR_ROUTER) # INTERFACE table does not exist - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "INTERFACE"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "INTERFACE"] output = self.run_script(argument) self.assertEqual(output.strip(), "") # PORTCHANNEL_INTERFACE table does not exist - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "PORTCHANNEL_INTERFACE"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "PORTCHANNEL_INTERFACE"] output = self.run_script(argument) self.assertEqual(output.strip(), "") # SLB and BGP Monitor table does not exist - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "BGP_PEER_RANGE"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "BGP_PEER_RANGE"] output = self.run_script(argument) self.assertEqual(output.strip(), "{}") - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "BGP_MONITORS"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "BGP_MONITORS"] output = self.run_script(argument) self.assertEqual(output.strip(), "{}") # ACL_TABLE should not contain EVERFLOW related entries - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "ACL_TABLE"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "ACL_TABLE"] output = self.run_script(argument) sample_output = utils.to_dict(output.strip()).keys() assert 'DATAACL' in sample_output, sample_output @@ -828,7 +826,7 @@ def verify_sub_intf(self, **kwargs): self.test_minigraph_vxlan(graph_file=graph_file) # VLAN_SUB_INTERFACE - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v VLAN_SUB_INTERFACE' + argument = ['-m', graph_file, '-p', self.port_config, '-v', 'VLAN_SUB_INTERFACE'] output = self.run_script(argument) print(output.strip()) # not a usecase to parse SubInterfaces under PortChannel @@ -861,24 +859,24 @@ def verify_sub_intf(self, **kwargs): finally: print('\n Change device type back to %s' % (TOR_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_TOR_ROUTER, TOR_ROUTER, graph_file), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_TOR_ROUTER, TOR_ROUTER), graph_file], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_TOR_ROUTER, TOR_ROUTER, graph_file), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_TOR_ROUTER, TOR_ROUTER), graph_file]) self.test_jinja_expression(graph_file, self.port_config, TOR_ROUTER) def test_show_run_acl(self): - argument = '-a \'{"key1":"value"}\' --var-json ACL_RULE' + argument = ['-a', '{"key1":"value"}', '--var-json', 'ACL_RULE'] output = self.run_script(argument) self.assertEqual(output, '') def test_show_run_interfaces(self): - argument = '-a \'{"key1":"value"}\' --var-json INTERFACE' + argument = ['-a', '{"key1":"value"}', '--var-json', 'INTERFACE'] output = self.run_script(argument) self.assertEqual(output, '') def test_minigraph_voq_metadata(self): - argument = "-j {} -m {} -p {} --var-json DEVICE_METADATA".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "--var-json", "DEVICE_METADATA"] output = json.loads(self.run_script(argument)) self.assertEqual(output['localhost']['asic_name'], 'Asic0') self.assertEqual(output['localhost']['switch_id'], '0') @@ -886,7 +884,7 @@ def test_minigraph_voq_metadata(self): self.assertEqual(output['localhost']['max_cores'], '16') def test_minigraph_voq_system_ports(self): - argument = "-j {} -m {} -p {} --var-json SYSTEM_PORT".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "--var-json", "SYSTEM_PORT"] self.assertDictEqual( json.loads(self.run_script(argument)), { @@ -905,7 +903,7 @@ def test_minigraph_voq_system_ports(self): ) def test_minigraph_voq_port_macsec_enabled(self): - argument = '-j "' + self.macsec_profile + '" -m "' + self.sample_graph_voq + '" -p "' + self.voq_port_config + '" -v "PORT[\'Ethernet0\']"' + argument = ['-j', self.macsec_profile, '-m', self.sample_graph_voq, '-p', self.voq_port_config, '-v', "PORT[\'Ethernet0\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -913,7 +911,7 @@ def test_minigraph_voq_port_macsec_enabled(self): ) def test_minigraph_voq_inband_interface_port(self): - argument = "-j {} -m {} -p {} --var-json VOQ_INBAND_INTERFACE".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "--var-json", "VOQ_INBAND_INTERFACE"] output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertDictEqual( @@ -926,7 +924,7 @@ def test_minigraph_voq_inband_interface_port(self): ) def test_minigraph_voq_inband_port(self): - argument = "-j {} -m {} -p {} --var-json PORT".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "--var-json", "PORT"] output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertDictEqual( @@ -944,7 +942,7 @@ def test_minigraph_voq_inband_port(self): }) def test_minigraph_voq_recirc_ports(self): - argument = "-j {} -m {} -p {} --var-json PORT".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "--var-json", "PORT"] output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertDictEqual( @@ -962,7 +960,7 @@ def test_minigraph_voq_recirc_ports(self): }) def test_minigraph_dhcp(self): - argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP_RELAY' + argument = ['-m', self.sample_graph_simple_case, '-p', self.port_config, '-v', 'DHCP_RELAY'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -973,7 +971,7 @@ def test_minigraph_dhcp(self): ) def test_minigraph_bgp_packet_chassis_peer(self): - argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "BGP_INTERNAL_NEIGHBOR[\'8.0.0.1\']"' + argument = ['-m', self.packet_chassis_graph, '-p', self.packet_chassis_port_ini, '-n', "asic1", '-v', "BGP_INTERNAL_NEIGHBOR[\'8.0.0.1\']"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -981,14 +979,14 @@ def test_minigraph_bgp_packet_chassis_peer(self): ) def test_minigraph_bgp_packet_chassis_static_route(self): - argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -v "STATIC_ROUTE"' + argument = ['-m', self.packet_chassis_graph, '-p', self.packet_chassis_port_ini, '-v', "STATIC_ROUTE"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict("{'8.0.0.1/32': {'nexthop': '192.168.1.2,192.168.2.2', 'ifname': 'PortChannel40,PortChannel50', 'advertise':'false'}}") ) - argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "STATIC_ROUTE"' + argument = ['-m', self.packet_chassis_graph, '-p', self.packet_chassis_port_ini, '-n', "asic1", '-v', "STATIC_ROUTE"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -996,7 +994,7 @@ def test_minigraph_bgp_packet_chassis_static_route(self): ) def test_minigraph_bgp_packet_chassis_vlan_subintf(self): - argument = '-m "' + self.packet_chassis_graph + '" -p "' + self.packet_chassis_port_ini + '" -n "' + "asic1" + '" -v "VLAN_SUB_INTERFACE"' + argument = ['-m', self.packet_chassis_graph, '-p', self.packet_chassis_port_ini, '-n', "asic1", '-v', "VLAN_SUB_INTERFACE"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -1004,14 +1002,14 @@ def test_minigraph_bgp_packet_chassis_vlan_subintf(self): ) def test_minigraph_voq_400g_zr_port_config(self): - argument = "-j {} -m {} -p {} -v \"PORT[\'Ethernet4\']\"".format(self.macsec_profile, self.sample_graph_voq, self.voq_port_config) + argument = ["-j", self.macsec_profile, "-m", self.sample_graph_voq, "-p", self.voq_port_config, "-v" "PORT[\'Ethernet4\']"] output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertEqual(output_dict['tx_power'], '-10') self.assertEqual(output_dict['laser_freq'], 195875) def test_minigraph_packet_chassis_400g_zr_port_config(self): - argument = "-m {} -p {} -n asic1 -v \"PORT[\'Ethernet13\']\"".format(self.packet_chassis_graph, self.packet_chassis_port_ini) + argument = ["-m", self.packet_chassis_graph, "-p", self.packet_chassis_port_ini, "-n", "asic1", "-v", "PORT[\'Ethernet13\']"] output = self.run_script(argument) output_dict = utils.to_dict(output.strip()) self.assertEqual(output_dict['tx_power'], '7.5') diff --git a/src/sonic-config-engine/tests/test_cfggen_from_yang.py b/src/sonic-config-engine/tests/test_cfggen_from_yang.py index 801340ea4722..ddc77c8b0311 100644 --- a/src/sonic-config-engine/tests/test_cfggen_from_yang.py +++ b/src/sonic-config-engine/tests/test_cfggen_from_yang.py @@ -4,6 +4,7 @@ import os import tests.common_utils as utils +from sonic_py_common.general import getstatusoutput_noshell #TODO: Remove this fixuture once SONiC moves to python3.x @@ -21,20 +22,18 @@ class TestCfgGen(object): @pytest.fixture(autouse=True) def setup_teardown(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join( - self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join( + self.test_dir, '..', 'sonic-cfggen')] self.sample_yang_file = os.path.join(self.test_dir, 'test_yang_data.json') def run_script(self, arg, check_stderr=False): - print('\n Running sonic-cfggen ' + arg) + print('\n Running sonic-cfggen ', arg) if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + arg, - stderr=subprocess.STDOUT, - shell=True) + output = subprocess.check_output(self.script_file + arg, + stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + arg, - shell=True) + output = subprocess.check_output(self.script_file + arg) if utils.PY3x: output = output.decode() @@ -48,32 +47,31 @@ def run_script(self, arg, check_stderr=False): return output def run_diff(self, file1, file2): - return subprocess.check_output('diff -u {} {} || true'.format( - file1, file2), - shell=True) + _, output = getstatusoutput_noshell(['diff', '-u', file1, file2]) + return output def run_script_with_yang_arg(self, arg, check_stderr=False): - args = "-Y {} {}".format(self.sample_yang_file, arg) + args = ["-Y", self.sample_yang_file] + arg return self.run_script(arg=args, check_stderr=check_stderr) def test_print_data(self): - arg = "--print-data" + arg = ["--print-data"] output = self.run_script_with_yang_arg(arg) assert len(output.strip()) > 0 def test_jinja_expression(self, expected_router_type='LeafRouter'): - arg = " -v \"DEVICE_METADATA[\'localhost\'][\'type\']\" " + arg = ["-v", "DEVICE_METADATA[\'localhost\'][\'type\']"] output = self.run_script_with_yang_arg(arg) assert output.strip() == expected_router_type def test_hwsku(self): - arg = "-v \"DEVICE_METADATA[\'localhost\'][\'hwsku\']\" " + arg = ["-v", "DEVICE_METADATA[\'localhost\'][\'hwsku\']"] output = self.run_script_with_yang_arg(arg) assert output.strip() == "Force10-S6000" def test_device_metadata(self): - arg = "--var-json \"DEVICE_METADATA\" " + arg = ["--var-json", "DEVICE_METADATA"] output = json.loads(self.run_script_with_yang_arg(arg)) assert (output['localhost'] == {\ 'bgp_asn': '65100', @@ -87,7 +85,7 @@ def test_device_metadata(self): def test_port_table(self): - arg = "--var-json \"PORT\"" + arg = ["--var-json", "PORT"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == \ {'Ethernet0': {'admin_status': 'up', 'alias': 'eth0', 'description': 'Ethernet0', 'fec': 'rs', 'lanes': '65, 66', 'mtu': '9100', 'pfc_asym': 'on', 'speed': '40000'}, @@ -101,7 +99,7 @@ def test_port_table(self): }) def test_portchannel_table(self): - arg = "--var-json \"PORTCHANNEL\"" + arg = ["--var-json", "PORTCHANNEL"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == \ {'PortChannel1001': {'admin_status': 'up', @@ -116,7 +114,7 @@ def test_portchannel_table(self): 'mtu': '9100'}}) def test_portchannel_member_table(self): - arg = "--var-json \"PORTCHANNEL_MEMBER\"" + arg = ["--var-json", "PORTCHANNEL_MEMBER"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output ==\ { "PortChannel1001|Ethernet0": {}, @@ -126,7 +124,7 @@ def test_portchannel_member_table(self): }) def test_interface_table(self): - arg = "--var-json \"INTERFACE\"" + arg = ["--var-json", "INTERFACE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output =={\ "Ethernet8": {}, @@ -150,7 +148,7 @@ def test_interface_table(self): }) def test_portchannel_interface_table(self): - arg = "--var-json \"PORTCHANNEL_INTERFACE\"" + arg = ["--var-json", "PORTCHANNEL_INTERFACE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output =={\ "PortChannel1001|10.0.0.1/31": {}, @@ -158,7 +156,7 @@ def test_portchannel_interface_table(self): }) def test_loopback_table(self): - arg = "--var-json \"LOOPBACK_INTERFACE\"" + arg = ["--var-json", "LOOPBACK_INTERFACE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "Loopback0": {}, @@ -173,7 +171,7 @@ def test_loopback_table(self): }) def test_acl_table(self): - arg = "--var-json \"ACL_TABLE\"" + arg = ["--var-json", "ACL_TABLE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ 'DATAACL': {'policy_desc': 'DATAACL', 'ports': ['PortChannel1001','PortChannel1002'], 'stage': 'ingress', 'type': 'L3'}, @@ -183,7 +181,7 @@ def test_acl_table(self): 'SSH_ONLY': {'policy_desc': 'SSH_ONLY', 'services': ['SSH'], 'stage': 'ingress', 'type': 'CTRLPLANE'}}) def test_acl_rule(self): - arg = "--var-json \"ACL_RULE\"" + arg = ["--var-json", "ACL_RULE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "DATAACL|Rule1": { @@ -201,7 +199,7 @@ def test_acl_rule(self): }) def test_vlan_table(self): - arg = "--var-json \"VLAN\"" + arg = ["--var-json", "VLAN"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "Vlan100": { @@ -218,7 +216,7 @@ def test_vlan_table(self): }) def test_vlan_interface(self): - arg = "--var-json \"VLAN_INTERFACE\"" + arg = ["--var-json", "VLAN_INTERFACE"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "Vlan100": {}, @@ -233,7 +231,7 @@ def test_vlan_interface(self): }) def test_vlan_member(self): - arg = "--var-json \"VLAN_MEMBER\"" + arg = ["--var-json", "VLAN_MEMBER"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "Vlan100|Ethernet24": { @@ -245,7 +243,7 @@ def test_vlan_member(self): }) def test_vlan_crm(self): - arg = "--var-json \"CRM\"" + arg = ["--var-json", "CRM"] output = json.loads(self.run_script_with_yang_arg(arg)) assert(output == {\ "Config": { diff --git a/src/sonic-config-engine/tests/test_cfggen_pfx_filter.py b/src/sonic-config-engine/tests/test_cfggen_pfx_filter.py index 1ac2b7f7f5f3..b3cad3aa2152 100644 --- a/src/sonic-config-engine/tests/test_cfggen_pfx_filter.py +++ b/src/sonic-config-engine/tests/test_cfggen_pfx_filter.py @@ -9,13 +9,14 @@ class TestPfxFilter(TestCase): def test_comprehensive(self): # Generate output data_dir = "tests/data/pfx_filter" - cmd = "{} ./sonic-cfggen -j {}/param_1.json -t {}/tmpl_1.txt.j2 > /tmp/result_1.txt".format( - utils.PYTHON_INTERPRETTER, data_dir, data_dir - ) - subprocess.check_output(cmd, shell=True) + output_file = "/tmp/result_1.txt" + cmd = [utils.PYTHON_INTERPRETTER, "./sonic-cfggen", "-j", "{}/param_1.json".format(data_dir), "-t", "{}/tmpl_1.txt.j2".format(data_dir)] + output = subprocess.check_output(cmd, universal_newlines=True) + with open(output_file, 'w') as f: + f.write(output) # Compare outputs - cmd = "diff -u tests/data/pfx_filter/result_1.txt /tmp/result_1.txt" + cmd = ["diff", "-u", "tests/data/pfx_filter/result_1.txt", "/tmp/result_1.txt"] try: - res = subprocess.check_output(cmd, shell=True) + res = subprocess.check_output(cmd) except subprocess.CalledProcessError as e: assert False, "Wrong output. return code: %d, Diff: %s" % (e.returncode, e.output) diff --git a/src/sonic-config-engine/tests/test_cfggen_platformJson.py b/src/sonic-config-engine/tests/test_cfggen_platformJson.py index 0af361718b99..5d39fd2f3660 100644 --- a/src/sonic-config-engine/tests/test_cfggen_platformJson.py +++ b/src/sonic-config-engine/tests/test_cfggen_platformJson.py @@ -3,7 +3,7 @@ import os import subprocess import sys - +import ast import tests.common_utils as utils from unittest import TestCase @@ -21,17 +21,17 @@ class TestCfgGenPlatformJson(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.platform_sample_graph = os.path.join(self.test_dir, 'platform-sample-graph.xml') self.platform_json = os.path.join(self.test_dir, 'sample_platform.json') self.hwsku_json = os.path.join(self.test_dir, 'sample_hwsku.json') def run_script(self, argument, check_stderr=False): - print('\n Running sonic-cfggen ' + argument) + print('\n Running sonic-cfggen ', argument) if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() @@ -44,18 +44,18 @@ def run_script(self, argument, check_stderr=False): return output def test_dummy_run(self): - argument = '' + argument = [] output = self.run_script(argument) self.assertEqual(output, '') def test_print_data(self): - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" --print-data' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '--print-data'] output = self.run_script(argument) self.assertTrue(len(output.strip()) > 0) # Check whether all interfaces present or not as per platform.json def test_platform_json_interfaces_keys(self): - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT.keys()|list"' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '-S', self.hwsku_json, '-v', "PORT.keys()|list"] output = self.run_script(argument) self.maxDiff = None @@ -71,24 +71,24 @@ def test_platform_json_interfaces_keys(self): 'Ethernet139', 'Ethernet140', 'Ethernet141', 'Ethernet142', 'Ethernet144' ] - self.assertEqual(sorted(eval(output.strip())), sorted(expected)) + self.assertEqual(sorted(ast.literal_eval(output.strip())), sorted(expected)) # Check specific Interface with it's proper configuration as per platform.json def test_platform_json_specific_ethernet_interfaces(self): - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet8\']"' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '-S', self.hwsku_json, '-v', "PORT[\'Ethernet8\']"] output = self.run_script(argument) self.maxDiff = None expected = "{'index': '3', 'lanes': '8', 'description': 'Eth3/1', 'mtu': '9100', 'alias': 'Eth3/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet112\']"' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '-S', self.hwsku_json, '-v', "PORT[\'Ethernet112\']"] output = self.run_script(argument) self.maxDiff = None expected = "{'index': '29', 'lanes': '112', 'description': 'Eth29/1', 'mtu': '9100', 'alias': 'Eth29/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet4\']"' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '-S', self.hwsku_json, '-v', "PORT[\'Ethernet4\']"] output = self.run_script(argument) self.maxDiff = None expected = "{'index': '2', 'lanes': '4,5', 'description': 'Eth2/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth2/1', 'pfc_asym': 'off', 'speed': '50000', 'tpid': '0x8100'}" @@ -97,7 +97,7 @@ def test_platform_json_specific_ethernet_interfaces(self): # Check all Interface with it's proper configuration as per platform.json def test_platform_json_all_ethernet_interfaces(self): - argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT"' + argument = ['-m', self.platform_sample_graph, '-p', self.platform_json, '-S', self.hwsku_json, '-v', "PORT"] output = self.run_script(argument) self.maxDiff = None diff --git a/src/sonic-config-engine/tests/test_cfggen_t2_chassis_fe.py b/src/sonic-config-engine/tests/test_cfggen_t2_chassis_fe.py index a3d6d02a7ff2..9bf3fc8a3ed5 100644 --- a/src/sonic-config-engine/tests/test_cfggen_t2_chassis_fe.py +++ b/src/sonic-config-engine/tests/test_cfggen_t2_chassis_fe.py @@ -1,6 +1,5 @@ import os import subprocess - import tests.common_utils as utils from unittest import TestCase @@ -10,18 +9,18 @@ class TestCfgGenT2ChassisFe(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.sample_graph_t2_chassis_fe = os.path.join(self.test_dir, 't2-chassis-fe-graph.xml') self.sample_graph_t2_chassis_fe_vni = os.path.join(self.test_dir, 't2-chassis-fe-graph-vni.xml') self.sample_graph_t2_chassis_fe_pc = os.path.join(self.test_dir, 't2-chassis-fe-graph-pc.xml') self.t2_chassis_fe_port_config = os.path.join(self.test_dir, 't2-chassis-fe-port-config.ini') def run_script(self, argument, check_stderr=False): - print('\n Running sonic-cfggen ' + argument) + print('\n Running sonic-cfggen ' + ' '.join(argument)) if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() @@ -34,12 +33,12 @@ def run_script(self, argument, check_stderr=False): return output def test_minigraph_t2_chassis_fe_type(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe + '" -p "' + self.t2_chassis_fe_port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'type\']"' + argument = ['-m', self.sample_graph_t2_chassis_fe, '-p', self.t2_chassis_fe_port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'type\']"] output = self.run_script(argument) self.assertEqual(output.strip(), 'SpineChassisFrontendRouter') def test_minigraph_t2_chassis_fe_interfaces(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe + '" -p "' + self.t2_chassis_fe_port_config + '" -v "INTERFACE"' + argument = ['-m', self.sample_graph_t2_chassis_fe, '-p', self.t2_chassis_fe_port_config, '-v', "INTERFACE"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -53,7 +52,7 @@ def test_minigraph_t2_chassis_fe_interfaces(self): ) ) def test_minigraph_t2_chassis_fe_pc_interfaces(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe_pc + '" -p "' + self.t2_chassis_fe_port_config + '" -v "PORTCHANNEL_INTERFACE"' + argument = ['-m', self.sample_graph_t2_chassis_fe_pc, '-p', self.t2_chassis_fe_port_config, '-v', "PORTCHANNEL_INTERFACE"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -70,17 +69,17 @@ def test_minigraph_t2_chassis_fe_pc_interfaces(self): # Test a minigraph file where VNI is not specified # Default VNI is 8000 def test_minigraph_t2_chassis_fe_vnet_default(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe + '" -p "' + self.t2_chassis_fe_port_config + '" -v "VNET"' + argument = ['-m', self.sample_graph_t2_chassis_fe, '-p', self.t2_chassis_fe_port_config, '-v', "VNET"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'VnetFE': {'vxlan_tunnel': 'TunnelInt', 'vni': 8000}}") # Test a minigraph file where VNI is specified def test_minigraph_t2_chassis_fe_vnet(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe_vni + '" -p "' + self.t2_chassis_fe_port_config + '" -v "VNET"' + argument = ['-m', self.sample_graph_t2_chassis_fe_vni, '-p', self.t2_chassis_fe_port_config, '-v', "VNET"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'VnetFE': {'vxlan_tunnel': 'TunnelInt', 'vni': 9000}}") def test_minigraph_t2_chassis_fe_vxlan(self): - argument = '-m "' + self.sample_graph_t2_chassis_fe + '" -p "' + self.t2_chassis_fe_port_config + '" -v "VXLAN_TUNNEL"' + argument = ['-m', self.sample_graph_t2_chassis_fe, '-p', self.t2_chassis_fe_port_config, '-v', "VXLAN_TUNNEL"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'TunnelInt': {'src_ip': '4.0.0.0'}}") diff --git a/src/sonic-config-engine/tests/test_frr.py b/src/sonic-config-engine/tests/test_frr.py index 3934f8c7d70c..8f31b4ac7979 100644 --- a/src/sonic-config-engine/tests/test_frr.py +++ b/src/sonic-config-engine/tests/test_frr.py @@ -3,13 +3,13 @@ import subprocess import tests.common_utils as utils - +from sonic_py_common.general import getstatusoutput_noshell from unittest import TestCase class TestCfgGen(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.t0_minigraph = os.path.join(self.test_dir, 't0-sample-graph.xml') self.t0_port_config = os.path.join(self.test_dir, 't0-sample-port-config.ini') self.output_file = os.path.join(self.test_dir, 'output') @@ -21,15 +21,19 @@ def tearDown(self): pass - def run_script(self, argument, check_stderr=False): + def run_script(self, argument, check_stderr=False, output_file=None): # print '\n Running sonic-cfggen ' + argument + if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() + if output_file: + with open(output_file, 'w') as f: + f.write(output) linecount = output.strip().count('\n') if linecount <= 0: @@ -39,20 +43,15 @@ def run_script(self, argument, check_stderr=False): return output def run_diff(self, file1, file2): - output = subprocess.check_output('diff -u {} {} || true'.format(file1, file2), shell=True) - - if utils.PY3x: - output = output.decode() - + _, output = getstatusoutput_noshell(['diff', '-u', file1, file2]) return output def run_case(self, template, target): template_dir = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-fpm-frr', "frr") conf_template = os.path.join(template_dir, template) constants = os.path.join(self.test_dir, '..', '..', '..', 'files', 'image_config', 'constants', 'constants.yml') - cmd_args = self.t0_minigraph, self.t0_port_config, constants, conf_template, template_dir, self.output_file - cmd = "-m %s -p %s -y %s -t %s -T %s > %s" % cmd_args - self.run_script(cmd) + cmd = ['-m', self.t0_minigraph, '-p', self.t0_port_config, '-y', constants, '-t', conf_template, '-T', template_dir] + self.run_script(cmd, output_file=self.output_file) original_filename = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, target) r = filecmp.cmp(original_filename, self.output_file) @@ -69,4 +68,3 @@ def test_bgpd_frr(self): def test_zebra_frr(self): self.assertTrue(*self.run_case('zebra/zebra.conf.j2', 'zebra_frr.conf')) - diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py index 3ac219468e43..40af24151c8b 100644 --- a/src/sonic-config-engine/tests/test_j2files.py +++ b/src/sonic-config-engine/tests/test_j2files.py @@ -5,12 +5,13 @@ from unittest import TestCase import tests.common_utils as utils +from sonic_py_common.general import getstatusoutput_noshell, getstatusoutput_noshell_pipe class TestJ2Files(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.simple_minigraph = os.path.join(self.test_dir, 'simple-sample-graph.xml') self.port_data = os.path.join(self.test_dir, 'sample-port-data.json') self.ztp = os.path.join(self.test_dir, "sample-ztp.json") @@ -40,17 +41,21 @@ def setUp(self): self.output_file = os.path.join(self.test_dir, 'output') os.environ["CFGGEN_UNIT_TESTING"] = "2" - def run_script(self, argument): - print('CMD: sonic-cfggen ' + argument) - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + def run_script(self, argument, output_file=None): + print('CMD: sonic-cfggen ', argument) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() + if output_file: + with open(output_file, 'w') as f: + f.write(output) return output def run_diff(self, file1, file2): - return subprocess.check_output('diff -u {} {} || true'.format(file1, file2), shell=True) + _, output = getstatusoutput_noshell(['diff', '-u', file1, file2]) + return output def create_machine_conf(self, platform, vendor): file_exist = True @@ -59,23 +64,24 @@ def create_machine_conf(self, platform, vendor): 'dell': 'onie', 'mellanox': 'onie' } - echo_cmd = "echo '{}_platform={}' | sudo tee -a /host/machine.conf > /dev/null".format(mode[vendor], platform) + echo_cmd1 = ["echo", '{}_platform={}'.format(mode[vendor], platform)] + echo_cmd2 = ["sudo", "tee", "-a", "/host/machine.conf"] if not os.path.exists('/host/machine.conf'): file_exist = False if not os.path.isdir('/host'): dir_exist = False - os.system('sudo mkdir /host') - os.system('sudo touch /host/machine.conf') - os.system(echo_cmd) + subprocess.call(['sudo', 'mkdir', '/host']) + subprocess.call(['sudo', 'touch', '/host/machine.conf']) + getstatusoutput_noshell_pipe(echo_cmd1, echo_cmd2) return file_exist, dir_exist def remove_machine_conf(self, file_exist, dir_exist): if not file_exist: - os.system('sudo rm -f /host/machine.conf') + subprocess.call(['sudo', 'rm', '-f', '/host/machine.conf']) if not dir_exist: - os.system('sudo rmdir /host') + subprocess.call(['sudo', 'rmdir', '/host']) def modify_cable_len(self, base_file, file_dir): input_file = os.path.join(file_dir, base_file) @@ -95,76 +101,76 @@ def test_interfaces(self): interfaces_template = os.path.join(self.test_dir, '..', '..', '..', 'files', 'image_config', 'interfaces', 'interfaces.j2') # ZTP enabled - argument = '-m ' + self.t0_minigraph_nomgmt + ' -p ' + self.t0_port_config_tiny + ' -j ' + self.ztp + ' -j ' + self.port_data + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + '> ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_nomgmt, '-p', self.t0_port_config_tiny, '-j', self.ztp, '-j', self.port_data, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces_nomgmt_ztp'), self.output_file)) - argument = '-m ' + self.t0_minigraph_nomgmt + ' -p ' + self.t0_port_config_tiny + ' -j ' + self.ztp_inband + ' -j ' + self.port_data + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + '> ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_nomgmt, '-p', self.t0_port_config_tiny, '-j', self.ztp_inband, '-j', self.port_data, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces_nomgmt_ztp_inband'), self.output_file)) - argument = '-m ' + self.t0_minigraph_nomgmt + ' -p ' + self.t0_port_config_tiny + ' -j ' + self.ztp_ip + ' -j ' + self.port_data + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + '> ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_nomgmt, '-p', self.t0_port_config_tiny, '-j', self.ztp_ip, '-j', self.port_data, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces_nomgmt_ztp_ip'), self.output_file)) - argument = '-m ' + self.t0_minigraph_nomgmt + ' -p ' + self.t0_port_config_tiny + ' -j ' + self.ztp_inband_ip + ' -j ' + self.port_data + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + '> ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_nomgmt, '-p', self.t0_port_config_tiny, '-j', self.ztp_inband_ip, '-j', self.port_data, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces_nomgmt_ztp_inband_ip'), self.output_file)) # ZTP disabled, MGMT_INTERFACE defined - argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph, '-p', self.t0_port_config, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces'), self.output_file)) - argument = '-m ' + self.t0_mvrf_minigraph + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_mvrf_minigraph, '-p', self.t0_port_config, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'mvrf_interfaces'), self.output_file)) - argument = '-m ' + self.t0_minigraph_two_mgmt + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_two_mgmt, '-p', self.t0_port_config, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'two_mgmt_interfaces'), self.output_file), self.output_file) # ZTP disabled, no MGMT_INTERFACE defined - argument = '-m ' + self.t0_minigraph_nomgmt + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph_nomgmt, '-p', self.t0_port_config, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'interfaces_nomgmt'), self.output_file)) - argument = '-m ' + self.t0_mvrf_minigraph_nomgmt + ' -p ' + self.t0_port_config + ' -a \'{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}\' -t ' + interfaces_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_mvrf_minigraph_nomgmt, '-p', self.t0_port_config, '-a', '{\"hwaddr\":\"e4:1d:2d:a5:f3:ad\"}', '-t', interfaces_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'mvrf_interfaces_nomgmt'), self.output_file)) def test_ports_json(self): ports_template = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-orchagent', 'ports.json.j2') - argument = '-m ' + self.simple_minigraph + ' -p ' + self.t0_port_config + ' -t ' + ports_template + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.simple_minigraph, '-p', self.t0_port_config, '-t', ports_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'ports.json'), self.output_file)) def test_dhcp_relay(self): # Test generation of wait_for_intf.sh dhc_sample_data = os.path.join(self.test_dir, "dhcp-relay-sample.json") template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-dhcp-relay', 'wait_for_intf.sh.j2') - argument = '-m ' + self.t0_minigraph + ' -j ' + dhc_sample_data + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph, '-j', dhc_sample_data, '-p', self.t0_port_config, '-t', template_path] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'wait_for_intf.sh'), self.output_file)) # Test generation of docker-dhcp-relay.supervisord.conf template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-dhcp-relay', 'docker-dhcp-relay.supervisord.conf.j2') - argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph, '-p', self.t0_port_config, '-t', template_path] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'docker-dhcp-relay.supervisord.conf'), self.output_file)) # Test generation of docker-dhcp-relay.supervisord.conf when a vlan is missing ip/ipv6 helpers template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-dhcp-relay', 'docker-dhcp-relay.supervisord.conf.j2') - argument = '-m ' + self.no_ip_helper_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.no_ip_helper_minigraph, '-p', self.t0_port_config, '-t', template_path] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'docker-dhcp-relay-no-ip-helper.supervisord.conf'), self.output_file)) def test_radv(self): # Test generation of radvd.conf with multiple ipv6 prefixes template_path = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-router-advertiser', 'radvd.conf.j2') - argument = '-m ' + self.radv_test_minigraph + ' -p ' + self.t0_port_config + ' -t ' + template_path + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.radv_test_minigraph, '-p', self.t0_port_config, '-t', template_path] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'radvd.conf'), self.output_file)) def test_lldp(self): @@ -176,32 +182,32 @@ def test_lldp(self): # Test generation of lldpd.conf if IPv4 and IPv6 management interfaces exist mgmt_iface_ipv4_and_ipv6_json = os.path.join(self.test_dir, "data", "lldp", "mgmt_iface_ipv4_and_ipv6.json") - argument = '-j {} -t {} > {}'.format(mgmt_iface_ipv4_and_ipv6_json, lldpd_conf_template, self.output_file) - self.run_script(argument) + argument = ['-j', mgmt_iface_ipv4_and_ipv6_json, '-t', lldpd_conf_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(expected_mgmt_ipv4_and_ipv6, self.output_file)) # Test generation of lldpd.conf if management interface IPv4 only exist mgmt_iface_ipv4_json = os.path.join(self.test_dir, "data", "lldp", "mgmt_iface_ipv4.json") - argument = '-j {} -t {} > {}'.format(mgmt_iface_ipv4_json, lldpd_conf_template, self.output_file) - self.run_script(argument) + argument = ['-j', mgmt_iface_ipv4_json, '-t', lldpd_conf_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(expected_mgmt_ipv4, self.output_file)) # Test generation of lldpd.conf if Management interface IPv6 only exist mgmt_iface_ipv6_json = os.path.join(self.test_dir, "data", "lldp", "mgmt_iface_ipv6.json") - argument = '-j {} -t {} > {}'.format(mgmt_iface_ipv6_json, lldpd_conf_template, self.output_file) - self.run_script(argument) + argument = ['-j', mgmt_iface_ipv6_json, '-t', lldpd_conf_template] + self.run_script(argument, output_file=self.output_file) self.assertTrue(utils.cmp(expected_mgmt_ipv6, self.output_file)) def test_ipinip(self): ipinip_file = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-orchagent', 'ipinip.json.j2') - argument = '-m ' + self.t0_minigraph + ' -p ' + self.t0_port_config + ' -t ' + ipinip_file + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.t0_minigraph, '-p', self.t0_port_config, '-t', ipinip_file] + self.run_script(argument, output_file=self.output_file) sample_output_file = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, 'ipinip.json') assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) def test_l2switch_template(self): - argument = '-k Mellanox-SN2700 --preset l2 -p ' + self.t0_port_config + argument = ['-k', 'Mellanox-SN2700', '--preset', 'l2', '-p', self.t0_port_config] output = self.run_script(argument) output_json = json.loads(output) @@ -212,14 +218,14 @@ def test_l2switch_template(self): self.assertTrue(json.dumps(sample_output_json, sort_keys=True) == json.dumps(output_json, sort_keys=True)) template_dir = os.path.join(self.test_dir, '..', 'data', 'l2switch.j2') - argument = '-t ' + template_dir + ' -k Mellanox-SN2700 -p ' + self.t0_port_config + argument = ['-t', template_dir, '-k', 'Mellanox-SN2700', '-p', self.t0_port_config] output = self.run_script(argument) output_json = json.loads(output) self.assertTrue(json.dumps(sample_output_json, sort_keys=True) == json.dumps(output_json, sort_keys=True)) def test_l1_ports_template(self): - argument = '-k 32x1000Gb --preset l1 -p ' + self.l1_l3_port_config + argument = ['-k', '32x1000Gb', '--preset', 'l1', '-p', self.l1_l3_port_config] output = self.run_script(argument) output_json = json.loads(output) @@ -230,14 +236,14 @@ def test_l1_ports_template(self): self.assertTrue(json.dumps(sample_output_json, sort_keys=True) == json.dumps(output_json, sort_keys=True)) template_dir = os.path.join(self.test_dir, '..', 'data', 'l1intf.j2') - argument = '-t ' + template_dir + ' -k 32x1000Gb -p ' + self.l1_l3_port_config + argument = ['-t', template_dir, '-k', '32x1000Gb', '-p', self.l1_l3_port_config] output = self.run_script(argument) output_json = json.loads(output) self.assertTrue(json.dumps(sample_output_json, sort_keys=True) == json.dumps(output_json, sort_keys=True)) def test_l3_ports_template(self): - argument = '-k 32x1000Gb --preset l3 -p ' + self.l1_l3_port_config + argument = ['-k', '32x1000Gb', '--preset', 'l3', '-p', self.l1_l3_port_config] output = self.run_script(argument) output_json = json.loads(output) @@ -248,7 +254,7 @@ def test_l3_ports_template(self): self.assertTrue(json.dumps(sample_output_json, sort_keys=True) == json.dumps(output_json, sort_keys=True)) template_dir = os.path.join(self.test_dir, '..', 'data', 'l3intf.j2') - argument = '-t ' + template_dir + ' -k 32x1000Gb -p ' + self.l1_l3_port_config + argument = ['-t', template_dir, '-k', '32x1000Gb', '-p', self.l1_l3_port_config] output = self.run_script(argument) output_json = json.loads(output) @@ -270,9 +276,7 @@ def test_l2switch_template_dualtor(self): "Ethernet112", "Ethernet116", "Ethernet120", "Ethernet124" ] } - argument = '-a \'{}\' -k Arista-7050CX3-32S-D48C8 --preset l2 -p {}'.format( - json.dumps(extra_args), self.t0_7050cx3_port_config - ) + argument = ['-a', json.dumps(extra_args), '-k', 'Arista-7050CX3-32S-D48C8', '--preset', 'l2', '-p', self.t0_7050cx3_port_config] output = self.run_script(argument) output_json = json.loads(output) @@ -299,8 +303,8 @@ def do_test_qos_and_buffer_arista7800r3_48cq2_lc_render_template(self, platform, for template_file, cfg_file, sample_output_file in [(qos_file, 'qos_config.j2', 'qos-arista7800r3-48cq2-lc.json'), (buffer_file, 'buffers_config.j2', 'buffer-arista7800r3-48cq2-lc.json') ]: - argument = '-m ' + self.arista7800r3_48cq2_lc_t2_minigraph + ' -p ' + port_config_ini_file + ' -t ' + template_file + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', self.arista7800r3_48cq2_lc_t2_minigraph, '-p', port_config_ini_file, '-t', template_file] + self.run_script(argument, output_file=self.output_file) # cleanup cfg_file_new = os.path.join(arista_dir_path, cfg_file) @@ -335,8 +339,8 @@ def _test_qos_render_template(self, vendor, platform, sku, minigraph, expected): shutil.copy2(qos_config_file, dir_path) minigraph = os.path.join(self.test_dir, minigraph) - argument = '-m ' + minigraph + ' -p ' + port_config_ini_file + ' -t ' + qos_file + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', minigraph, '-p', port_config_ini_file, '-t', qos_file] + self.run_script(argument, output_file=self.output_file) # cleanup qos_config_file_new = os.path.join(dir_path, 'qos_config.j2') @@ -398,8 +402,8 @@ def test_qos_dscp_remapping_render_template(self): qos_config_file = os.path.join(self.test_dir, '..', '..', '..', 'files', 'build_templates', 'qos_config.j2') shutil.copy2(qos_config_file, device_template_path) - argument = '-m ' + sample_minigraph_file + ' -p ' + port_config_ini_file + ' -t ' + qos_file + ' > ' + test_output - self.run_script(argument) + argument = ['-m', sample_minigraph_file, '-p', port_config_ini_file, '-t', qos_file] + self.run_script(argument, output_file=test_output) # cleanup qos_config_file_new = os.path.join(device_template_path, 'qos_config.j2') @@ -432,8 +436,8 @@ def test_config_brcm_render_template(self): config_bcm_file = os.path.join(device_template_path, 'config.bcm.j2') config_test_output = os.path.join(self.test_dir, 'config_output.bcm') - argument = '-m ' + sample_minigraph_file + ' -p ' + port_config_ini_file + ' -t ' + config_bcm_file + ' > ' + config_test_output - self.run_script(argument) + argument = ['-m', sample_minigraph_file, '-p', port_config_ini_file, '-t', config_bcm_file] + self.run_script(argument, output_file=config_test_output) #check output config.bcm config_sample_output_file = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, config_sample_output) @@ -451,8 +455,8 @@ def _test_buffers_render_template(self, vendor, platform, sku, minigraph, buffer shutil.copy2(buffers_config_file, dir_path) minigraph = os.path.join(self.test_dir, minigraph) - argument = '-m ' + minigraph + ' -p ' + port_config_ini_file + ' -t ' + buffers_file + ' > ' + self.output_file - self.run_script(argument) + argument = ['-m', minigraph, '-p', port_config_ini_file, '-t', buffers_file] + self.run_script(argument, output_file=self.output_file) # cleanup buffers_config_file_new = os.path.join(dir_path, 'buffers_config.j2') @@ -516,9 +520,9 @@ def test_extra_lossless_buffer_for_tunnel_remapping(self): def test_ipinip_multi_asic(self): ipinip_file = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-orchagent', 'ipinip.json.j2') - argument = '-m ' + self.multi_asic_minigraph + ' -p ' + self.multi_asic_port_config + ' -t ' + ipinip_file + ' -n asic0 ' + ' > ' + self.output_file + argument = ['-m', self.multi_asic_minigraph, '-p', self.multi_asic_port_config, '-t', ipinip_file, '-n', 'asic0'] print(argument) - self.run_script(argument) + self.run_script(argument, output_file=self.output_file) sample_output_file = os.path.join(self.test_dir, 'multi_npu_data', utils.PYvX_DIR, 'ipinip.json') assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) @@ -544,13 +548,11 @@ def test_swss_switch_render_template(self): }, } for _, v in test_list.items(): - argument = " -m {} -p {} -y {} -t {} > {}".format( - v["graph"], v["port_config"], constants_yml, switch_template, self.output_file - ) + argument = ["-m", v["graph"], "-p", v["port_config"], "-y", constants_yml, "-t", switch_template] sample_output_file = os.path.join( self.test_dir, 'sample_output', v["output"] ) - self.run_script(argument) + self.run_script(argument, output_file=self.output_file) assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) def test_swss_switch_render_template_multi_asic(self): @@ -575,14 +577,11 @@ def test_swss_switch_render_template_multi_asic(self): } for _, v in test_list.items(): os.environ["NAMESPACE_ID"] = v["namespace_id"] - argument = " -m {} -y {} -t {} > {}".format( - self.t1_mlnx_minigraph, constants_yml, switch_template, - self.output_file - ) + argument = ["-m", self.t1_mlnx_minigraph, "-y", constants_yml, "-t", switch_template] sample_output_file = os.path.join( self.test_dir, 'sample_output', v["output"] ) - self.run_script(argument) + self.run_script(argument, output_file=self.output_file) assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) os.environ["NAMESPACE_ID"] = "" @@ -591,8 +590,8 @@ def test_ndppd_conf(self): vlan_interfaces_json = os.path.join(self.test_dir, "data", "ndppd", "vlan_interfaces.json") expected = os.path.join(self.test_dir, "sample_output", utils.PYvX_DIR, "ndppd.conf") - argument = '-j {} -t {} > {}'.format(vlan_interfaces_json, conf_template, self.output_file) - self.run_script(argument) + argument = ['-j', vlan_interfaces_json, '-t', conf_template] + self.run_script(argument, output_file=self.output_file) assert utils.cmp(expected, self.output_file), self.run_diff(expected, self.output_file) def test_ntp_conf(self): @@ -600,8 +599,8 @@ def test_ntp_conf(self): ntp_interfaces_json = os.path.join(self.test_dir, "data", "ntp", "ntp_interfaces.json") expected = os.path.join(self.test_dir, "sample_output", utils.PYvX_DIR, "ntp.conf") - argument = '-j {} -t {} > {}'.format(ntp_interfaces_json, conf_template, self.output_file) - self.run_script(argument) + argument = ['-j', ntp_interfaces_json, '-t', conf_template] + self.run_script(argument, output_file=self.output_file) assert utils.cmp(expected, self.output_file), self.run_diff(expected, self.output_file) def test_backend_acl_template_render(self): @@ -623,13 +622,11 @@ def test_backend_acl_template_render(self): input_file = os.path.join( self.test_dir, 'data', 'backend_acl', v['input'] ) - argument = " -j {} -t {} > {}".format( - input_file, acl_template, self.output_file - ) + argument = ["-j", input_file, "-t", acl_template] sample_output_file = os.path.join( self.test_dir, 'data', 'backend_acl', v['output'] ) - self.run_script(argument) + self.run_script(argument, output_file=self.output_file) assert utils.cmp(sample_output_file, self.output_file), self.run_diff(sample_output_file, self.output_file) def tearDown(self): diff --git a/src/sonic-config-engine/tests/test_j2files_t2_chassis_fe.py b/src/sonic-config-engine/tests/test_j2files_t2_chassis_fe.py index e6bc82941bf6..b23bb93ddd8b 100644 --- a/src/sonic-config-engine/tests/test_j2files_t2_chassis_fe.py +++ b/src/sonic-config-engine/tests/test_j2files_t2_chassis_fe.py @@ -3,15 +3,15 @@ import os import shutil import subprocess - from unittest import TestCase import tests.common_utils as utils +from sonic_py_common.general import getstatusoutput_noshell class TestJ2FilesT2ChassisFe(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.t2_chassis_fe_minigraph = os.path.join(self.test_dir, 't2-chassis-fe-graph.xml') self.t2_chassis_fe_vni_minigraph = os.path.join(self.test_dir, 't2-chassis-fe-graph-vni.xml') self.t2_chassis_fe_pc_minigraph = os.path.join(self.test_dir, 't2-chassis-fe-graph-pc.xml') @@ -24,25 +24,28 @@ def tearDown(self): except OSError: pass - def run_script(self, argument): - print('CMD: sonic-cfggen ' + argument) - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + def run_script(self, argument, output_file=None): + print('CMD: sonic-cfggen ' + ' '.join(argument)) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() + if output_file: + with open(output_file, 'w') as f: + f.write(output) return output def run_diff(self, file1, file2): - return subprocess.check_output('diff -u {} {} || true'.format(file1, file2), shell=True) + _, output = getstatusoutput_noshell(['diff', '-u', file1, file2]) + return output def run_case(self, minigraph, template, target): template_dir = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-fpm-frr', "frr") conf_template = os.path.join(template_dir, template) constants = os.path.join(self.test_dir, '..', '..', '..', 'files', 'image_config', 'constants', 'constants.yml') - cmd_args = minigraph, self.t2_chassis_fe_port_config, constants, conf_template, template_dir, self.output_file - cmd = "-m %s -p %s -y %s -t %s -T %s > %s" % cmd_args - self.run_script(cmd) + cmd = ["-m", minigraph, "-p", self.t2_chassis_fe_port_config, "-y", constants, "-t", conf_template, "-T", template_dir] + self.run_script(cmd, output_file=self.output_file) original_filename = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, target) r = filecmp.cmp(original_filename, self.output_file) diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index ba3274c8671b..90731e0855a7 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -2,7 +2,6 @@ import os import subprocess import ipaddress - import tests.common_utils as utils import minigraph @@ -17,7 +16,7 @@ class TestCfgGenCaseInsensitive(TestCase): def setUp(self): self.yang = utils.YangWrapper() self.test_dir = os.path.dirname(os.path.realpath(__file__)) - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.sample_graph = os.path.join(self.test_dir, 'simple-sample-graph-case.xml') self.sample_simple_graph = os.path.join(self.test_dir, 'simple-sample-graph.xml') self.sample_resource_graph = os.path.join(self.test_dir, 'sample-graph-resource-type.xml') @@ -27,13 +26,13 @@ def setUp(self): self.port_config = os.path.join(self.test_dir, 't0-sample-port-config.ini') def run_script(self, argument, check_stderr=False): - print('\n Running sonic-cfggen ' + argument) + print('\n Running sonic-cfggen ' + ' '.join(argument)) self.assertTrue(self.yang.validate(argument)) if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() @@ -46,47 +45,47 @@ def run_script(self, argument, check_stderr=False): return output def test_dummy_run(self): - argument = '' + argument = [] output = self.run_script(argument) self.assertEqual(output, '') def test_minigraph_sku(self): - argument = '-v "DEVICE_METADATA[\'localhost\'][\'hwsku\']" -m "' + self.sample_graph + '" -p "' + self.port_config + '"' + argument = ['-v', "DEVICE_METADATA[\'localhost\'][\'hwsku\']", '-m', self.sample_graph, '-p', self.port_config] output = self.run_script(argument) self.assertEqual(output.strip(), 'Force10-S6000') def test_print_data(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" --print-data' + argument = ['-m', self.sample_graph, '-p', self.port_config, '--print-data'] output = self.run_script(argument) self.assertTrue(len(output.strip()) > 0) def test_jinja_expression(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'type\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'type\']"] output = self.run_script(argument) self.assertEqual(output.strip(), 'ToRRouter') def test_minigraph_subtype(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'subtype\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'subtype\']"] output = self.run_script(argument) self.assertEqual(output.strip(), 'DualToR') def test_minigraph_peer_switch_hostname(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'peer_switch\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'peer_switch\']"] output = self.run_script(argument) self.assertEqual(output.strip(), 'switch2-t0') def test_additional_json_data(self): - argument = '-a \'{"key1":"value1"}\' -v key1' + argument = ['-a', '{"key1":"value1"}', '-v', 'key1'] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1') def test_read_yaml(self): - argument = '-v yml_item -y ' + os.path.join(self.test_dir, 'test.yml') + argument = ['-v', 'yml_item', '-y', os.path.join(self.test_dir, 'test.yml')] output = self.run_script(argument) self.assertEqual(output.strip(), '[\'value1\', \'value2\']') def test_render_template(self): - argument = '-y ' + os.path.join(self.test_dir, 'test.yml') + ' -t ' + os.path.join(self.test_dir, 'test.j2') + argument = ['-y', os.path.join(self.test_dir, 'test.yml'), '-t', os.path.join(self.test_dir, 'test.j2')] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1\nvalue2') @@ -97,12 +96,12 @@ def test_render_template(self): # self.assertEqual(output.strip(), "{'everflow0': {'src_ip': '10.1.0.32', 'dst_ip': '10.0.100.1'}}") def test_minigraph_interfaces(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v \'INTERFACE.keys()|list\'' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'INTERFACE.keys()|list'] output = self.run_script(argument) self.assertEqual(output.strip(), "[('Ethernet0', '10.0.0.58/31'), 'Ethernet0', ('Ethernet0', 'FC00::75/126')]") def test_minigraph_vlans(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v VLAN' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'VLAN'] output = self.run_script(argument) expected = { @@ -126,7 +125,7 @@ def test_minigraph_vlans(self): ) def test_minigraph_vlan_members(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v VLAN_MEMBER' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'VLAN_MEMBER'] output = self.run_script(argument) expected = { 'Vlan1000|Ethernet8': {'tagging_mode': 'untagged'}, @@ -138,12 +137,12 @@ def test_minigraph_vlan_members(self): ) def test_minigraph_vlan_interfaces_keys(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VLAN_INTERFACE.keys()|list"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "VLAN_INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual(output.strip(), "[('Vlan1000', '192.168.0.1/27'), 'Vlan1000']") def test_minigraph_vlan_interfaces(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VLAN_INTERFACE"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "VLAN_INTERFACE"] output = self.run_script(argument) expected_table = { 'Vlan1000|192.168.0.1/27': {}, @@ -155,7 +154,7 @@ def test_minigraph_vlan_interfaces(self): self.assertEqual(utils.to_dict(output.strip()), expected_table) def test_minigraph_portchannels(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v PORTCHANNEL' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'PORTCHANNEL'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -163,44 +162,44 @@ def test_minigraph_portchannels(self): ) def test_minigraph_console_mgmt_feature(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v CONSOLE_SWITCH' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'CONSOLE_SWITCH'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict("{'console_mgmt': {'enabled': 'no'}}")) def test_minigraph_console_port(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v CONSOLE_PORT' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', 'CONSOLE_PORT'] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict("{'1': {'baud_rate': '9600', 'remote_device': 'managed_device', 'flow_control': 1}}")) def test_minigraph_dhcp_server_feature(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'dhcp_server\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'dhcp_server\']"] output = self.run_script(argument) self.assertEqual(output.strip(), '') try: # For DHCP server enabled device type - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BMC_MGMT_TOR_ROUTER, self.sample_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BMC_MGMT_TOR_ROUTER), self.sample_graph]) output = self.run_script(argument) self.assertEqual(output.strip(), 'enabled') finally: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BMC_MGMT_TOR_ROUTER, TOR_ROUTER, self.sample_graph), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BMC_MGMT_TOR_ROUTER, TOR_ROUTER), self.sample_graph]) def test_minigraph_deployment_id(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'deployment_id\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'deployment_id\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "1") def test_minigraph_cluster(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'cluster\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'cluster\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "AAA00PrdStr00") def test_minigraph_neighbor_metadata(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_NEIGHBOR_METADATA"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_NEIGHBOR_METADATA"] expected_table = { 'switch2-t0': { @@ -253,43 +252,43 @@ def test_minigraph_neighbor_metadata(self): # self.assertEqual(output.strip(), "{'everflow0': {'src_ip': '10.1.0.32', 'dst_ip': '10.0.100.1'}}") def test_metadata_tacacs(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "TACPLUS_SERVER"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "TACPLUS_SERVER"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'10.0.10.7': {'priority': '1', 'tcp_port': '49'}, '10.0.10.8': {'priority': '1', 'tcp_port': '49'}}") def test_metadata_kube(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "KUBERNETES_MASTER[\'SERVER\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "KUBERNETES_MASTER[\'SERVER\']"] output = self.run_script(argument) self.assertEqual(json.loads(output.strip().replace("'", "\"")), json.loads('{"ip": "10.10.10.10", "disable": "True"}')) def test_minigraph_mgmt_port(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "MGMT_PORT"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "MGMT_PORT"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'eth0': {'alias': 'eth0', 'admin_status': 'up', 'speed': '1000'}}") def test_metadata_ntp(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "NTP_SERVER"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "NTP_SERVER"] output = self.run_script(argument) self.assertEqual(output.strip(), "{'10.0.10.1': {}, '10.0.10.2': {}}") def test_minigraph_vnet(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VNET"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "VNET"] output = self.run_script(argument) self.assertEqual(output.strip(), "") def test_minigraph_vxlan(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "VXLAN_TUNNEL"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "VXLAN_TUNNEL"] output = self.run_script(argument) self.assertEqual(output.strip(), "") def test_minigraph_bgp_mon(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "BGP_MONITORS"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "BGP_MONITORS"] output = self.run_script(argument) self.assertEqual(output.strip(), "{}") def test_minigraph_peer_switch(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "PEER_SWITCH"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "PEER_SWITCH"] expected_table = { 'switch2-t0': { 'address_ipv4': "25.1.1.10" @@ -314,7 +313,7 @@ def test_mux_cable_parsing(self): self.assertTrue("mux_cable" not in port) def test_minigraph_storage_device(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'storage_device\']"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'storage_device\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "true") @@ -331,23 +330,23 @@ def verify_storage_device_set(self, graph_file, check_stderr=False): try: print('\n Change device type to %s' % (BACKEND_TOR_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_TOR_ROUTER, graph_file), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_TOR_ROUTER), graph_file], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (TOR_ROUTER, BACKEND_TOR_ROUTER, graph_file), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (TOR_ROUTER, BACKEND_TOR_ROUTER), graph_file]) - argument = '-m "' + graph_file + '" -p "' + self.port_config + '" -v "DEVICE_METADATA[\'localhost\'][\'storage_device\']"' + argument = ['-m', graph_file, '-p', self.port_config, '-v', "DEVICE_METADATA[\'localhost\'][\'storage_device\']"] output = self.run_script(argument) self.assertEqual(output.strip(), "true") finally: print('\n Change device type back to %s' % (TOR_ROUTER)) if check_stderr: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_TOR_ROUTER, TOR_ROUTER, graph_file), stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_TOR_ROUTER, TOR_ROUTER), graph_file], stderr=subprocess.STDOUT) else: - output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_TOR_ROUTER, TOR_ROUTER, graph_file), shell=True) + output = subprocess.check_output(["sed", "-i", 's/%s/%s/g' % (BACKEND_TOR_ROUTER, TOR_ROUTER), graph_file]) def test_minigraph_tunnel_table(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "TUNNEL"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "TUNNEL"] expected_tunnel = { "MuxTunnel0": { "tunnel_type": "IPINIP", @@ -367,7 +366,7 @@ def test_minigraph_tunnel_table(self): # Validate tunnel config is as before when tunnel_qos_remap = disabled sample_graph_disabled_remap = os.path.join(self.test_dir, 'simple-sample-graph-case-remap-disabled.xml') - argument = '-m "' + sample_graph_disabled_remap + '" -p "' + self.port_config + '" -v "TUNNEL"' + argument = ['-m', sample_graph_disabled_remap, '-p', self.port_config, '-v', "TUNNEL"] output = self.run_script(argument) self.assertEqual( @@ -377,7 +376,7 @@ def test_minigraph_tunnel_table(self): # Validate extra config is generated when tunnel_qos_remap = enabled sample_graph_enabled_remap = os.path.join(self.test_dir, 'simple-sample-graph-case-remap-enabled.xml') - argument = '-m "' + sample_graph_enabled_remap + '" -p "' + self.port_config + '" -v "TUNNEL"' + argument = ['-m', sample_graph_enabled_remap, '-p', self.port_config, '-v', "TUNNEL"] expected_tunnel = { "MuxTunnel0": { "tunnel_type": "IPINIP", @@ -402,7 +401,7 @@ def test_minigraph_tunnel_table(self): # Validate extra config for mux tunnel is generated automatically when tunnel_qos_remap = enabled sample_graph_enabled_remap = os.path.join(self.test_dir, 'simple-sample-graph-case-remap-enabled-no-tunnel-attributes.xml') - argument = '-m "' + sample_graph_enabled_remap + '" -p "' + self.port_config + '" -v "TUNNEL"' + argument = ['-m', sample_graph_enabled_remap, '-p', self.port_config, '-v', "TUNNEL"] output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), @@ -410,7 +409,7 @@ def test_minigraph_tunnel_table(self): ) def test_minigraph_mux_cable_table(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "MUX_CABLE"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "MUX_CABLE"] expected_table = { 'Ethernet4': { 'state': 'auto', @@ -434,7 +433,7 @@ def test_minigraph_mux_cable_table(self): ) def test_dhcp_table(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DHCP_RELAY"' + argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DHCP_RELAY"] expected = { 'Vlan1000': { 'dhcpv6_servers': [ diff --git a/src/sonic-config-engine/tests/test_multinpu_cfggen.py b/src/sonic-config-engine/tests/test_multinpu_cfggen.py index 744afd1fbce9..8559c10394a3 100644 --- a/src/sonic-config-engine/tests/test_multinpu_cfggen.py +++ b/src/sonic-config-engine/tests/test_multinpu_cfggen.py @@ -5,10 +5,10 @@ import subprocess import unittest import yaml - import tests.common_utils as utils from unittest import TestCase +from sonic_py_common.general import getstatusoutput_noshell SKU = 'multi-npu-01' @@ -23,7 +23,7 @@ def setUp(self): self.yang = utils.YangWrapper() self.test_dir = os.path.dirname(os.path.realpath(__file__)) self.test_data_dir = os.path.join(self.test_dir, 'multi_npu_data') - self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') + self.script_file = [utils.PYTHON_INTERPRETTER, os.path.join(self.test_dir, '..', 'sonic-cfggen')] self.sample_graph = os.path.join(self.test_data_dir, 'sample-minigraph.xml') self.sample_graph1 = os.path.join(self.test_data_dir, 'sample-minigraph-noportchannel.xml') self.sample_port_config = os.path.join(self.test_data_dir, 'sample_port_config.ini') @@ -33,17 +33,19 @@ def setUp(self): self.output_file = os.path.join(self.test_dir, 'output') os.environ["CFGGEN_UNIT_TESTING"] = "2" - def run_script(self, argument, check_stderr=False): - print('\n Running sonic-cfggen ' + argument) + def run_script(self, argument, check_stderr=False, output_file=None): + print('\n Running sonic-cfggen ' + ' '.join(argument)) self.assertTrue(self.yang.validate(argument)) - if check_stderr: - output = subprocess.check_output(self.script_file + ' ' + argument, stderr=subprocess.STDOUT, shell=True) + output = subprocess.check_output(self.script_file + argument, stderr=subprocess.STDOUT) else: - output = subprocess.check_output(self.script_file + ' ' + argument, shell=True) + output = subprocess.check_output(self.script_file + argument) if utils.PY3x: output = output.decode() + if output_file: + with open(output_file, 'w') as f: + f.write(output) linecount = output.strip().count('\n') if linecount <= 0: @@ -53,15 +55,15 @@ def run_script(self, argument, check_stderr=False): return output def run_diff(self, file1, file2): - return subprocess.check_output('diff -u {} {} || true'.format(file1, file2), shell=True) + _, output = getstatusoutput_noshell(['diff', '-u', file1, file2]) + return output def run_frr_asic_case(self, template, target, asic, port_config): template_dir = os.path.join(self.test_dir, '..', '..', '..', 'dockers', 'docker-fpm-frr', "frr") conf_template = os.path.join(template_dir, template) constants = os.path.join(self.test_dir, '..', '..', '..', 'files', 'image_config', 'constants', 'constants.yml') - cmd_args = asic, self.sample_graph, port_config, constants, conf_template, template_dir, self.output_file - cmd = "-n %s -m %s -p %s -y %s -t %s -T %s > %s" % cmd_args - self.run_script(cmd) + cmd = ['-n', asic, '-m', self.sample_graph, '-p', port_config, '-y', constants, '-t', conf_template, '-T', template_dir] + self.run_script(cmd, output_file=self.output_file) original_filename = os.path.join(self.test_dir, 'sample_output', utils.PYvX_DIR, target) r = filecmp.cmp(original_filename, self.output_file) @@ -72,37 +74,37 @@ def run_frr_asic_case(self, template, target, asic, port_config): def run_script_for_asic(self,argument,asic, port_config=None): - argument = "{} -n asic{} ".format(argument, asic) + cmd = argument + ["-n", "asic{}".format(asic)] if port_config: - argument += "-p {}".format(port_config) - output = self.run_script(argument) + cmd = argument + ["-n", "asic{}".format(asic), "-p", port_config] + output = self.run_script(cmd) return output def test_dummy_run(self): - argument = '' + argument = [] output = self.run_script(argument) self.assertEqual(output, '') def test_hwsku(self): - argument = "-v \"DEVICE_METADATA[\'localhost\'][\'hwsku\']\" -m \"{}\" -p \"{}\"".format(self.sample_graph, self.sample_port_config) + argument = ["-v", "DEVICE_METADATA[\'localhost\'][\'hwsku\']", "-m", self.sample_graph, "-p", self.sample_port_config] output = self.run_script(argument) self.assertEqual(output.strip(), SKU) - argument = "-v \"DEVICE_METADATA[\'localhost\'][\'hwsku\']\" -m \"{}\"".format(self.sample_graph) + argument = ["-v", "DEVICE_METADATA[\'localhost\'][\'hwsku\']", "-m", self.sample_graph] for asic in range(NUM_ASIC): output = self.run_script_for_asic(argument, asic, self.port_config[asic]) self.assertEqual(output.strip(), SKU) def test_print_data(self): - argument = "-m \"{}\" -p \"{}\" --print-data".format(self.sample_graph, self.sample_port_config) + argument = ["-m", self.sample_graph, "-p", self.sample_port_config, "--print-data"] output = self.run_script(argument) self.assertGreater(len(output.strip()) , 0) - argument = "-m \"{}\" --print-data".format(self.sample_graph) + argument = ["-m", self.sample_graph, "--print-data"] for asic in range(NUM_ASIC): output = self.run_script_for_asic(argument, asic, self.port_config[asic]) self.assertGreater(len(output.strip()) , 0) def test_additional_json_data(self): - argument = '-a \'{"key1":"value1"}\' -v key1' + argument = ['-a', '{"key1":"value1"}', '-v', 'key1'] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1') for asic in range(NUM_ASIC): @@ -110,15 +112,15 @@ def test_additional_json_data(self): self.assertEqual(output.strip(), 'value1') def test_read_yaml(self): - argument = '-v yml_item -y ' + os.path.join(self.test_dir, 'test.yml') - output = yaml.load(self.run_script(argument)) + argument = ['-v', 'yml_item', '-y', os.path.join(self.test_dir, 'test.yml')] + output = yaml.safe_load(self.run_script(argument)) self.assertListEqual(output, ['value1', 'value2']) for asic in range(NUM_ASIC): - output = yaml.load(self.run_script_for_asic(argument, asic, self.port_config[asic])) + output = yaml.safe_load(self.run_script_for_asic(argument, asic, self.port_config[asic])) self.assertListEqual(output, ['value1', 'value2']) def test_render_template(self): - argument = '-y ' + os.path.join(self.test_dir, 'test.yml') + ' -t ' + os.path.join(self.test_dir, 'test.j2') + argument = ['-y', os.path.join(self.test_dir, 'test.yml'), '-t', os.path.join(self.test_dir, 'test.j2')] output = self.run_script(argument) self.assertEqual(output.strip(), 'value1\nvalue2') for asic in range(NUM_ASIC): @@ -126,37 +128,37 @@ def test_render_template(self): self.assertEqual(output.strip(), 'value1\nvalue2') def test_metadata_tacacs(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.sample_port_config + '" --var-json "TACPLUS_SERVER"' + argument = ['-m', self.sample_graph, '-p', self.sample_port_config, '--var-json', "TACPLUS_SERVER"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {'123.46.98.21': {'priority': '1', 'tcp_port': '49'}}) #TACPLUS_SERVER not present in the asic configuration. - argument = '-m "' + self.sample_graph + '" --var-json "TACPLUS_SERVER"' + argument = ['-m', self.sample_graph, '--var-json', "TACPLUS_SERVER"] for asic in range(NUM_ASIC): output = json.loads(self.run_script_for_asic(argument, asic, self.port_config[asic])) self.assertDictEqual(output, {}) def test_metadata_ntp(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.sample_port_config + '" --var-json "NTP_SERVER"' + argument = ['-m', self.sample_graph, '-p', self.sample_port_config, '--var-json', "NTP_SERVER"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {'17.39.1.130': {}, '17.39.1.129': {}}) #NTP data is present only in the host config - argument = '-m "' + self.sample_graph + '" --var-json "NTP_SERVER"' + argument = ['-m', self.sample_graph, '--var-json', "NTP_SERVER"] for asic in range(NUM_ASIC): output = json.loads(self.run_script_for_asic(argument, asic, self.port_config[asic])) print("Log:asic{} sku {}".format(asic,output)) self.assertDictEqual(output, {}) def test_mgmt_port(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.sample_port_config + '" --var-json "MGMT_PORT"' + argument = ['-m', self.sample_graph, '-p', self.sample_port_config, '--var-json', "MGMT_PORT"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {'eth0': {'alias': 'eth0', 'admin_status': 'up'}}) - argument = '-m "' + self.sample_graph + '" --var-json "MGMT_PORT"' + argument = ['-m', self.sample_graph, '--var-json', "MGMT_PORT"] for asic in range(NUM_ASIC): output = json.loads(self.run_script_for_asic(argument, asic, self.port_config[asic])) self.assertDictEqual(output, {'eth0': {'alias': 'eth0', 'admin_status': 'up'}}) def test_frontend_asic_portchannels(self): - argument = "-m {} -p {} -n asic0 --var-json \"PORTCHANNEL\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'PortChannel0002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet0', 'Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, @@ -164,14 +166,14 @@ def test_frontend_asic_portchannels(self): 'PortChannel4002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP8', 'Ethernet-BP12'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_backend_asic_portchannels(self): - argument = "-m {} -p {} -n asic3 --var-json \"PORTCHANNEL\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'PortChannel4013': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP384', 'Ethernet-BP388'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, 'PortChannel4014': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP392', 'Ethernet-BP396'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_frontend_asic_portchannel_mem(self): - argument = "-m {} -p {} -n asic0 -v \"PORTCHANNEL_MEMBER.keys()|list\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "-v", "PORTCHANNEL_MEMBER.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -179,7 +181,7 @@ def test_frontend_asic_portchannel_mem(self): ) def test_backend_asic_portchannels_mem(self): - argument = "-m {} -p {} -n asic3 -v \"PORTCHANNEL_MEMBER.keys()|list\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "-v", "PORTCHANNEL_MEMBER.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -187,7 +189,7 @@ def test_backend_asic_portchannels_mem(self): ) def test_frontend_asic_portchannel_intf(self): - argument = "-m {} -p {} -n asic0 -v \"PORTCHANNEL_INTERFACE.keys()|list\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "-v", "PORTCHANNEL_INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -195,7 +197,7 @@ def test_frontend_asic_portchannel_intf(self): ) def test_frontend_asic_routerport_intf(self): - argument = "-m {} -p {} -n asic0 -v \"INTERFACE.keys()|list\"".format(self.sample_graph1, self.port_config[0]) + argument = ["-m", self.sample_graph1, "-p", self.port_config[0], "-n", "asic0", "-v", "INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -203,7 +205,7 @@ def test_frontend_asic_routerport_intf(self): ) def test_backend_asic_portchannel_intf(self): - argument = "-m {} -p {} -n asic3 -v \"PORTCHANNEL_INTERFACE.keys()|list\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "-v", "PORTCHANNEL_INTERFACE.keys()|list"] output = self.run_script(argument) self.assertEqual( utils.liststr_to_dict(output.strip()), @@ -211,7 +213,7 @@ def test_backend_asic_portchannel_intf(self): ) def test_frontend_asic_ports(self): - argument = "-m {} -p {} -n asic0 --var-json \"PORT\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "PORT"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {"Ethernet0": { "admin_status": "up", "alias": "Ethernet1/1", "asic_port_name": "Eth0-ASIC0", "description": "01T2:Ethernet1", "index": "0", "lanes": "33,34,35,36", "mtu": "9100", "tpid": "0x8100", "pfc_asym": "off", "role": "Ext", "speed": "40000", "autoneg": "on" }, @@ -224,7 +226,7 @@ def test_frontend_asic_ports(self): "Ethernet-BP12": { "admin_status": "up", "alias": "Eth7-ASIC0", "asic_port_name": "Eth7-ASIC0", "description": "ASIC3:Eth1-ASIC3", "index": "3", "lanes": "25,26,27,28", "mtu": "9100", "tpid": "0x8100", "pfc_asym": "off", "role": "Int", "speed": "40000" }}) def test_frontend_asic_ports_config_db(self): - argument = "-m {} -p {} -n asic0 --var-json \"PORT\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "PORT"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {"Ethernet0": { "admin_status": "up", "alias": "Ethernet1/1", "asic_port_name": "Eth0-ASIC0", "description": "01T2:Ethernet1", "index": "0", "lanes": "33,34,35,36", "mtu": "9100", "tpid": "0x8100", "pfc_asym": "off", "role": "Ext", "speed": "40000", "autoneg": "on" }, @@ -237,7 +239,7 @@ def test_frontend_asic_ports_config_db(self): "Ethernet-BP12": { "admin_status": "up", "alias": "Eth7-ASIC0", "asic_port_name": "Eth7-ASIC0", "description": "ASIC3:Eth1-ASIC3", "index": "3", "lanes": "25,26,27,28", "mtu": "9100", "tpid": "0x8100", "pfc_asym": "off", "role": "Int", "speed": "40000" }}) def test_frontend_asic_device_neigh(self): - argument = "-m {} -p {} -n asic0 --var-json \"DEVICE_NEIGHBOR\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "DEVICE_NEIGHBOR"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'Ethernet0': {'name': '01T2', 'port': 'Ethernet1'}, @@ -248,7 +250,7 @@ def test_frontend_asic_device_neigh(self): 'Ethernet-BP8': {'name': 'ASIC3', 'port': 'Eth0-ASIC3'}}) def test_frontend_asic_device_neigh_metadata(self): - argument = "-m {} -p {} -n asic0 --var-json \"DEVICE_NEIGHBOR_METADATA\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "DEVICE_NEIGHBOR_METADATA"] output = json.loads(self.run_script(argument)) print(output) self.assertDictEqual(output, \ @@ -257,7 +259,7 @@ def test_frontend_asic_device_neigh_metadata(self): 'ASIC2': {'lo_addr_v6': '::/0', 'mgmt_addr': '0.0.0.0/0', 'hwsku': 'multi-npu-asic', 'lo_addr': '0.0.0.0/0', 'type': 'Asic', 'mgmt_addr_v6': '::/0'}}) def test_backend_asic_device_neigh(self): - argument = "-m {} -p {} -n asic3 --var-json \"DEVICE_NEIGHBOR\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "DEVICE_NEIGHBOR"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'Ethernet-BP396': {'name': 'ASIC1', 'port': 'Eth7-ASIC1'}, @@ -266,7 +268,7 @@ def test_backend_asic_device_neigh(self): 'Ethernet-BP388': {'name': 'ASIC0', 'port': 'Eth7-ASIC0'}}) def test_backend_device_neigh_metadata(self): - argument = "-m {} -p {} -n asic3 --var-json \"DEVICE_NEIGHBOR_METADATA\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "DEVICE_NEIGHBOR_METADATA"] output = json.loads(self.run_script(argument)) print(output) self.assertDictEqual(output, \ @@ -274,28 +276,28 @@ def test_backend_device_neigh_metadata(self): 'ASIC0': {'lo_addr_v6': '::/0', 'mgmt_addr': '0.0.0.0/0', 'hwsku': 'multi-npu-asic', 'lo_addr': '0.0.0.0/0', 'type': 'Asic', 'mgmt_addr_v6': '::/0'}}) def test_frontend_bgp_neighbor(self): - argument = "-m {} -p {} -n asic0 --var-json \"BGP_NEIGHBOR\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "BGP_NEIGHBOR"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'10.0.0.1': {'rrclient': 0, 'name': '01T2', 'local_addr': '10.0.0.0', 'nhopself': 0, 'holdtime': '10', 'asn': '65200', 'keepalive': '3'}, 'fc00::2': {'rrclient': 0, 'name': '01T2', 'local_addr': 'fc00::1', 'nhopself': 0, 'holdtime': '10', 'asn': '65200', 'keepalive': '3'}}) def test_frontend_asic_bgp_neighbor(self): - argument = "-m {} -p {} -n asic0 --var-json \"BGP_INTERNAL_NEIGHBOR\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "BGP_INTERNAL_NEIGHBOR"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'10.1.0.0': {'rrclient': 0, 'name': 'ASIC2', 'local_addr': '10.1.0.1', 'nhopself': 0, 'admin_status': 'up', 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}, '10.1.0.2': {'rrclient': 0, 'name': 'ASIC3', 'local_addr': '10.1.0.3', 'nhopself': 0, 'admin_status': 'up', 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}}) def test_backend_asic_bgp_neighbor(self): - argument = "-m {} -p {} -n asic3 --var-json \"BGP_INTERNAL_NEIGHBOR\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "BGP_INTERNAL_NEIGHBOR"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ {'10.1.0.7': {'rrclient': 0, 'name': 'ASIC1', 'local_addr': '10.1.0.6', 'nhopself': 0, 'admin_status': 'up', 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}, '10.1.0.3': {'rrclient': 0, 'name': 'ASIC0', 'local_addr': '10.1.0.2', 'nhopself': 0, 'admin_status': 'up', 'holdtime': '0', 'asn': '65100', 'keepalive': '0'}}) def test_device_asic_metadata(self): - argument = "-m {} --var-json DEVICE_METADATA".format(self.sample_graph) + argument = ["-m", self.sample_graph, "--var-json", "DEVICE_METADATA"] for asic in range(NUM_ASIC): output = json.loads(self.run_script_for_asic(argument, asic,self.port_config[asic])) asic_name = "asic{}".format(asic) @@ -309,7 +311,7 @@ def test_device_asic_metadata(self): self.assertEqual(output['localhost']['deployment_id'], "1") def test_global_asic_acl(self): - argument = "-m {} -p {} --var-json \"ACL_TABLE\"".format(self.sample_graph, self.sample_port_config) + argument = ["-m", self.sample_graph, "-p", self.sample_port_config, "--var-json", "ACL_TABLE"] output = json.loads(self.run_script(argument)) exp = {\ 'SNMP_ACL': {'policy_desc': 'SNMP_ACL', 'type': 'CTRLPLANE', 'stage': 'ingress', 'services': ['SNMP']}, @@ -326,7 +328,7 @@ def test_global_asic_acl(self): self.assertDictEqual(output, exp) def test_global_asic_acl1(self): - argument = "-m {} -p {} --var-json \"ACL_TABLE\"".format(self.sample_graph1, self.sample_port_config) + argument = ["-m", self.sample_graph1, "-p", self.sample_port_config, "--var-json", "ACL_TABLE"] self.maxDiff = None output = json.loads(self.run_script(argument)) exp = {\ @@ -343,7 +345,7 @@ def test_global_asic_acl1(self): self.assertDictEqual(output, exp) def test_front_end_asic_acl(self): - argument = "-m {} -p {} -n asic0 --var-json \"ACL_TABLE\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "ACL_TABLE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {\ 'DATAACL': {'policy_desc': 'DATAACL', 'ports': ['PortChannel0002'], 'stage': 'ingress', 'type': 'L3'}, @@ -353,7 +355,7 @@ def test_front_end_asic_acl(self): 'SSH_ONLY': {'policy_desc': 'SSH_ONLY', 'services': ['SSH'], 'stage': 'ingress', 'type': 'CTRLPLANE'}}) def test_front_end_asic_acl1(self): - argument = "-m {} -p {} -n asic0 --var-json \"ACL_TABLE\"".format(self.sample_graph1, self.port_config[0]) + argument = ["-m", self.sample_graph1, "-p", self.port_config[0], "-n", "asic0", "--var-json", "ACL_TABLE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {\ 'EVERFLOW': {'policy_desc': 'EVERFLOW', 'ports': ['Ethernet0','Ethernet4'], 'stage': 'ingress', 'type': 'MIRROR'}, @@ -363,18 +365,18 @@ def test_front_end_asic_acl1(self): def test_back_end_asic_acl(self): - argument = "-m {} -p {} -n asic3 --var-json \"ACL_TABLE\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "ACL_TABLE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {}) def test_back_end_asic_acl1(self): - argument = "-m {} -p {} -n asic3 --var-json \"ACL_TABLE\"".format(self.sample_graph1, self.port_config[3]) + argument = ["-m", self.sample_graph1, "-p", self.port_config[3], "-n", "asic3", "--var-json", "ACL_TABLE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {}) def test_loopback_intfs(self): - argument = "-m {} -p {} --var-json \"LOOPBACK_INTERFACE\"".format(self.sample_graph, self.sample_port_config) + argument = ["-m", self.sample_graph, "-p", self.sample_port_config, "--var-json", "LOOPBACK_INTERFACE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {\ "Loopback0": {}, @@ -382,7 +384,7 @@ def test_loopback_intfs(self): "Loopback0|FC00:1::32/128": {}}) # The asic configuration should have 2 loopback interfaces - argument = "-m {} -p {} -n asic0 --var-json \"LOOPBACK_INTERFACE\"".format(self.sample_graph, self.port_config[0]) + argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "LOOPBACK_INTERFACE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, { \ "Loopback0": {}, @@ -392,7 +394,7 @@ def test_loopback_intfs(self): "Loopback4096|8.0.0.0/32": {}, "Loopback4096|FD00:1::32/128": {}}) - argument = "-m {} -p {} -n asic3 --var-json \"LOOPBACK_INTERFACE\"".format(self.sample_graph, self.port_config[3]) + argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "LOOPBACK_INTERFACE"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, {\ "Loopback0": {}, @@ -425,9 +427,7 @@ def test_buffers_multi_asic_template(self): ) # asic0 - mix of front end and back end ports shutil.copy2(buffer_template, device_config_dir) - argument = "-m {} -p {} -n asic0 -t {}".format( - self.sample_graph, port_config_ini_asic0, device_buffer_template - ) + argument = ["-m", self.sample_graph, "-p", port_config_ini_asic0, "-n", "asic0", "-t", device_buffer_template] output = json.loads(self.run_script(argument)) os.remove(os.path.join(device_config_dir, "buffers_config.j2")) self.assertDictEqual( From e9576eb57f4c72ccffb4d970b3f2ac8bf8779ce2 Mon Sep 17 00:00:00 2001 From: Rajkumar-Marvell <54936542+rajkumar38@users.noreply.github.com> Date: Thu, 17 Nov 2022 19:47:37 +0530 Subject: [PATCH 02/19] [Marvell] Move armhf syncd docker to bullseye. (#12585) Why I did it Move armhf syncd docker compilation to bullseye. How I did it compile syncd docker for armhf platform using below commands, NOJESSIE=1 NOSTRETCH=1 NOBUSTER=1 BLDENV=bullseye make configure PLATFORM=marvell-armhf PLATFORM_ARCH=armhf NOJESSIE=1 NOSTRETCH=1 NOBUSTER=1 BLDENV=bullseye make target/docker-syncd-mrvl.gz How to verify it upgrade the syncd docker and verify ports are up. Signed-off-by: rajkumar38 --- platform/marvell-armhf/docker-saiserver-mrvl.mk | 2 +- .../marvell-armhf/docker-syncd-mrvl-rpc/Dockerfile.j2 | 11 ++++++----- platform/marvell-armhf/docker-syncd-mrvl.mk | 2 +- .../marvell-armhf/docker-syncd-mrvl/Dockerfile.j2 | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/platform/marvell-armhf/docker-saiserver-mrvl.mk b/platform/marvell-armhf/docker-saiserver-mrvl.mk index e0be89b14a06..963335b57901 100644 --- a/platform/marvell-armhf/docker-saiserver-mrvl.mk +++ b/platform/marvell-armhf/docker-saiserver-mrvl.mk @@ -4,7 +4,7 @@ DOCKER_SAISERVER_MRVL = docker-saiserver-mrvl.gz $(DOCKER_SAISERVER_MRVL)_PATH = $(PLATFORM_PATH)/docker-saiserver-mrvl $(DOCKER_SAISERVER_MRVL)_DEPENDS += $(SAISERVER) $(DOCKER_SAISERVER_MRVL)_FILES += $(DSSERVE) $(BCMCMD) -$(DOCKER_SAISERVER_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) +$(DOCKER_SAISERVER_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BULLSEYE) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL) $(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver diff --git a/platform/marvell-armhf/docker-syncd-mrvl-rpc/Dockerfile.j2 b/platform/marvell-armhf/docker-syncd-mrvl-rpc/Dockerfile.j2 index 68670343bf37..b8bd6f64e719 100644 --- a/platform/marvell-armhf/docker-syncd-mrvl-rpc/Dockerfile.j2 +++ b/platform/marvell-armhf/docker-syncd-mrvl-rpc/Dockerfile.j2 @@ -15,7 +15,8 @@ RUN apt-get purge -y syncd RUN apt-get update \ && apt-get -y install \ net-tools \ - python-pip \ + python3-pip \ + python-setuptools \ build-essential \ libssl-dev \ libffi-dev \ @@ -24,7 +25,7 @@ RUN apt-get update \ cmake \ libqt5core5a \ libqt5network5 \ - libboost-atomic1.71.0 + libboost-atomic1.74.0 RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \ {% for deb in docker_syncd_mrvl_rpc_debs.split(' ') -%} @@ -41,9 +42,9 @@ RUN wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \ && cd .. \ && rm -fr nanomsg-1.0.0 \ && rm -f 1.0.0.tar.gz \ - && pip install cffi==1.7.0 \ - && pip install --upgrade cffi==1.7.0 \ - && pip install nnpy \ + && pip2 install cffi==1.7.0 \ + && pip2 install --upgrade cffi==1.7.0 \ + && pip2 install nnpy \ && mkdir -p /opt \ && cd /opt \ && wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py \ diff --git a/platform/marvell-armhf/docker-syncd-mrvl.mk b/platform/marvell-armhf/docker-syncd-mrvl.mk index 39135311ba42..236f8a437b44 100644 --- a/platform/marvell-armhf/docker-syncd-mrvl.mk +++ b/platform/marvell-armhf/docker-syncd-mrvl.mk @@ -1,7 +1,7 @@ # docker image for mrvl syncd DOCKER_SYNCD_PLATFORM_CODE = mrvl -include $(PLATFORM_PATH)/../template/docker-syncd-base.mk +include $(PLATFORM_PATH)/../template/docker-syncd-bullseye.mk $(DOCKER_SYNCD_BASE)_DEPENDS += $(SYNCD) diff --git a/platform/marvell-armhf/docker-syncd-mrvl/Dockerfile.j2 b/platform/marvell-armhf/docker-syncd-mrvl/Dockerfile.j2 index 7ec04c49fc4b..b5e70888a599 100755 --- a/platform/marvell-armhf/docker-syncd-mrvl/Dockerfile.j2 +++ b/platform/marvell-armhf/docker-syncd-mrvl/Dockerfile.j2 @@ -1,5 +1,5 @@ {% from "dockers/dockerfile-macros.j2" import install_debian_packages %} -FROM docker-config-engine-buster-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} +FROM docker-config-engine-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}} ARG docker_container_name From fecc7c6a1d7ddf6b9731c90b9040d7b67231d2e9 Mon Sep 17 00:00:00 2001 From: wenyiz2021 <91497961+wenyiz2021@users.noreply.github.com> Date: Thu, 17 Nov 2022 11:05:16 -0800 Subject: [PATCH 03/19] [Arista] [platform] Add thermal info in platform.json (#12714) add 1 more thermal entry --- device/arista/x86_64-arista_7800r3_48cq2_lc/platform.json | 3 +++ device/arista/x86_64-arista_7800r3_48cqm2_lc/platform.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/platform.json b/device/arista/x86_64-arista_7800r3_48cq2_lc/platform.json index edd9039804d7..30e4f32aff8a 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/platform.json +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/platform.json @@ -20,6 +20,9 @@ }, { "name": "PCIE" + }, + { + "name": "Cpu SBTSI" } ], "sfps": [ diff --git a/device/arista/x86_64-arista_7800r3_48cqm2_lc/platform.json b/device/arista/x86_64-arista_7800r3_48cqm2_lc/platform.json index 18798cabb33a..a714c370bea9 100644 --- a/device/arista/x86_64-arista_7800r3_48cqm2_lc/platform.json +++ b/device/arista/x86_64-arista_7800r3_48cqm2_lc/platform.json @@ -20,6 +20,9 @@ }, { "name": "PCIE" + }, + { + "name": "Cpu SBTSI" } ], "sfps": [ From dc21c9605e2d377b177e00d6228d289c6280db29 Mon Sep 17 00:00:00 2001 From: Neetha John Date: Thu, 17 Nov 2022 12:58:11 -0800 Subject: [PATCH 04/19] [Profile separation] MMU infrastructure update for TD2 (#12626) Signed-off-by: Neetha John Why I did it There is a need to have separate profiles on compute and storage and this infra update will help achieve that How I did it Moved buffer pool/profile and qos definitions on TD2 to a common folder and all TD2 hwsku's will reference that folder --- .../Arista-7050-QX32-Flex/BALANCED | 1 + .../Arista-7050-QX32-Flex/RDMA-CENTRIC | 1 + .../Arista-7050-QX32-Flex/TCP-CENTRIC | 1 + .../Arista-7050-QX32-Flex/buffer_ports_t0.j2 | 6 ++ .../Arista-7050-QX32-Flex/buffer_ports_t1.j2 | 6 ++ .../buffers_defaults_t0.j2 | 46 +---------- .../buffers_defaults_t1.j2 | 46 +---------- .../pg_profile_lookup.ini | 12 +-- .../Arista-7050-QX32-Flex/qos.json.j2 | 2 +- .../Arista-7050-QX32/BALANCED | 1 + .../Arista-7050-QX32/RDMA-CENTRIC | 1 + .../Arista-7050-QX32/TCP-CENTRIC | 1 + .../Arista-7050-QX32/buffer_ports_t0.j2 | 6 ++ .../Arista-7050-QX32/buffer_ports_t1.j2 | 6 ++ .../Arista-7050-QX32/buffers_defaults_t0.j2 | 46 +---------- .../Arista-7050-QX32/buffers_defaults_t1.j2 | 46 +---------- .../Arista-7050-QX32/pg_profile_lookup.ini | 12 +-- .../Arista-7050-QX32/qos.json.j2 | 2 +- .../Arista-7050QX-32S-S4Q31/BALANCED | 1 + .../Arista-7050QX-32S-S4Q31/RDMA-CENTRIC | 1 + .../Arista-7050QX-32S-S4Q31/TCP-CENTRIC | 1 + .../buffer_ports_t0.j2 | 10 +++ .../buffer_ports_t1.j2 | 10 +++ .../buffers_defaults_t0.j2 | 50 +----------- .../buffers_defaults_t1.j2 | 50 +----------- .../pg_profile_lookup.ini | 18 +---- .../Arista-7050QX-32S-S4Q31/qos.json.j2 | 2 +- .../Arista-7050QX32S-Q32/BALANCED | 1 + .../Arista-7050QX32S-Q32/RDMA-CENTRIC | 1 + .../Arista-7050QX32S-Q32/TCP-CENTRIC | 1 + .../Arista-7050QX32S-Q32/buffer_ports_t0.j2 | 6 ++ .../Arista-7050QX32S-Q32/buffer_ports_t1.j2 | 6 ++ .../buffers_defaults_t0.j2 | 46 +---------- .../buffers_defaults_t1.j2 | 46 +---------- .../pg_profile_lookup.ini | 12 +-- .../Arista-7050QX32S-Q32/qos.json.j2 | 2 +- .../td2/6000/BALANCED/buffers_defaults_t0.j2 | 40 ++++++++++ .../td2/6000/BALANCED/buffers_defaults_t1.j2 | 40 ++++++++++ .../td2/6000/BALANCED/pg_profile_lookup.ini | 17 ++++ .../profiles/td2/6000/BALANCED/qos.json.j2 | 1 + .../6000/RDMA-CENTRIC/buffers_defaults_t0.j2 | 40 ++++++++++ .../6000/RDMA-CENTRIC/buffers_defaults_t1.j2 | 40 ++++++++++ .../6000/RDMA-CENTRIC/pg_profile_lookup.ini | 17 ++++ .../td2/6000/RDMA-CENTRIC/qos.json.j2 | 1 + device/common/profiles/td2/6000/TCP-CENTRIC | 1 + .../td2/gen/BALANCED/buffers_defaults_t0.j2 | 40 ++++++++++ .../td2/gen/BALANCED/buffers_defaults_t1.j2 | 40 ++++++++++ .../td2/gen/BALANCED/pg_profile_lookup.ini | 17 ++++ .../profiles/td2/gen/BALANCED/qos.json.j2 | 1 + .../gen/RDMA-CENTRIC/buffers_defaults_t0.j2 | 40 ++++++++++ .../gen/RDMA-CENTRIC/buffers_defaults_t1.j2 | 40 ++++++++++ .../gen/RDMA-CENTRIC/pg_profile_lookup.ini | 17 ++++ .../profiles/td2/gen/RDMA-CENTRIC/qos.json.j2 | 1 + device/common/profiles/td2/gen/TCP-CENTRIC | 1 + .../Force10-S6000-Q20S48/BALANCED | 1 + .../Force10-S6000-Q20S48/RDMA-CENTRIC | 1 + .../Force10-S6000-Q20S48/TCP-CENTRIC | 1 + .../Force10-S6000-Q20S48/buffer_ports_t0.j2 | 24 ++++++ .../Force10-S6000-Q20S48/buffer_ports_t1.j2 | 24 ++++++ .../buffers_defaults_t0.j2 | 64 +-------------- .../buffers_defaults_t1.j2 | 64 +-------------- .../pg_profile_lookup.ini | 18 +---- .../Force10-S6000-Q20S48/qos.json.j2 | 2 +- .../Force10-S6000-Q24S32/BALANCED | 1 + .../Force10-S6000-Q24S32/RDMA-CENTRIC | 1 + .../Force10-S6000-Q24S32/TCP-CENTRIC | 1 + .../Force10-S6000-Q24S32/buffer_ports_t0.j2 | 15 ++++ .../Force10-S6000-Q24S32/buffer_ports_t1.j2 | 16 ++++ .../buffers_defaults_t0.j2 | 56 +------------ .../buffers_defaults_t1.j2 | 56 +------------ .../pg_profile_lookup.ini | 18 +---- .../Force10-S6000-Q24S32/qos.json.j2 | 2 +- .../Force10-S6000-Q28S16/BALANCED | 1 + .../Force10-S6000-Q28S16/RDMA-CENTRIC | 1 + .../Force10-S6000-Q28S16/TCP-CENTRIC | 1 + .../Force10-S6000-Q28S16/buffer_ports_t0.j2 | 39 +++++++++ .../Force10-S6000-Q28S16/buffer_ports_t1.j2 | 39 +++++++++ .../buffers_defaults_t0.j2 | 79 +------------------ .../buffers_defaults_t1.j2 | 79 +------------------ .../pg_profile_lookup.ini | 18 +---- .../Force10-S6000-Q28S16/qos.json.j2 | 2 +- .../Force10-S6000/BALANCED | 1 + .../Force10-S6000/RDMA-CENTRIC | 1 + .../Force10-S6000/TCP-CENTRIC | 1 + .../Force10-S6000/buffer_ports_t0.j2 | 7 ++ .../Force10-S6000/buffer_ports_t1.j2 | 6 ++ .../Force10-S6000/buffers_defaults_t0.j2 | 46 +---------- .../Force10-S6000/buffers_defaults_t1.j2 | 46 +---------- .../Force10-S6000/pg_profile_lookup.ini | 18 +---- .../Force10-S6000/qos.json.j2 | 2 +- 90 files changed, 676 insertions(+), 976 deletions(-) create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/BALANCED create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/RDMA-CENTRIC create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/TCP-CENTRIC create mode 100644 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t0.j2 create mode 100644 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/BALANCED create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/RDMA-CENTRIC create mode 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/TCP-CENTRIC create mode 100644 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t0.j2 create mode 100644 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/BALANCED create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/RDMA-CENTRIC create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/TCP-CENTRIC create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t0.j2 create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/BALANCED create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/RDMA-CENTRIC create mode 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/TCP-CENTRIC create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t0.j2 create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini mode change 100644 => 120000 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 create mode 100644 device/common/profiles/td2/6000/BALANCED/buffers_defaults_t0.j2 create mode 100644 device/common/profiles/td2/6000/BALANCED/buffers_defaults_t1.j2 create mode 100644 device/common/profiles/td2/6000/BALANCED/pg_profile_lookup.ini create mode 100644 device/common/profiles/td2/6000/BALANCED/qos.json.j2 create mode 100644 device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t0.j2 create mode 100644 device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t1.j2 create mode 100644 device/common/profiles/td2/6000/RDMA-CENTRIC/pg_profile_lookup.ini create mode 100644 device/common/profiles/td2/6000/RDMA-CENTRIC/qos.json.j2 create mode 120000 device/common/profiles/td2/6000/TCP-CENTRIC create mode 100644 device/common/profiles/td2/gen/BALANCED/buffers_defaults_t0.j2 create mode 100644 device/common/profiles/td2/gen/BALANCED/buffers_defaults_t1.j2 create mode 100644 device/common/profiles/td2/gen/BALANCED/pg_profile_lookup.ini create mode 100644 device/common/profiles/td2/gen/BALANCED/qos.json.j2 create mode 100644 device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 create mode 100644 device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 create mode 100644 device/common/profiles/td2/gen/RDMA-CENTRIC/pg_profile_lookup.ini create mode 100644 device/common/profiles/td2/gen/RDMA-CENTRIC/qos.json.j2 create mode 120000 device/common/profiles/td2/gen/TCP-CENTRIC create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/BALANCED create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/RDMA-CENTRIC create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/TCP-CENTRIC create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t0.j2 create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/BALANCED create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/RDMA-CENTRIC create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/TCP-CENTRIC create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t0.j2 create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/BALANCED create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/RDMA-CENTRIC create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/TCP-CENTRIC create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t0.j2 create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini mode change 100755 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/BALANCED create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/RDMA-CENTRIC create mode 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/TCP-CENTRIC create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t0.j2 create mode 100644 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t1.j2 mode change 100644 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 mode change 100644 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 mode change 100644 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini mode change 100644 => 120000 device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/BALANCED b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/BALANCED new file mode 120000 index 000000000000..808c3d86217f --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/BALANCED \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/RDMA-CENTRIC b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/RDMA-CENTRIC new file mode 120000 index 000000000000..8bcc02cca148 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/RDMA-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/TCP-CENTRIC b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/TCP-CENTRIC new file mode 120000 index 000000000000..7ac6cc7160ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/TCP-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t0.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t0.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t1.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffer_ports_t1.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 deleted file mode 100644 index ff6c35e0d9f6..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 deleted file mode 100644 index ff6c35e0d9f6..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini deleted file mode 100644 index d8190e4893de..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini +++ /dev/null @@ -1,11 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 40000 5m 46384 18432 45136 -3 2496 - 50000 5m 46592 18432 45344 -3 2496 - 100000 5m 48464 18432 47216 -3 2496 - 40000 40m 48464 18432 47216 -3 2496 - 50000 40m 49296 18432 48048 -3 2496 - 100000 40m 53872 18432 52624 -3 2496 - 40000 300m 64064 18432 62816 -3 2496 - 50000 300m 68848 18432 67600 -3 2496 - 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32-Flex/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/BALANCED b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/BALANCED new file mode 120000 index 000000000000..808c3d86217f --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/BALANCED \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/RDMA-CENTRIC b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/RDMA-CENTRIC new file mode 120000 index 000000000000..8bcc02cca148 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/RDMA-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/TCP-CENTRIC b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/TCP-CENTRIC new file mode 120000 index 000000000000..7ac6cc7160ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/TCP-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t0.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t0.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t1.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffer_ports_t1.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini deleted file mode 100644 index d8190e4893de..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini +++ /dev/null @@ -1,11 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 40000 5m 46384 18432 45136 -3 2496 - 50000 5m 46592 18432 45344 -3 2496 - 100000 5m 48464 18432 47216 -3 2496 - 40000 40m 48464 18432 47216 -3 2496 - 50000 40m 49296 18432 48048 -3 2496 - 100000 40m 53872 18432 52624 -3 2496 - 40000 300m 64064 18432 62816 -3 2496 - 50000 300m 68848 18432 67600 -3 2496 - 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/BALANCED b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/BALANCED new file mode 120000 index 000000000000..808c3d86217f --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/BALANCED \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/RDMA-CENTRIC b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/RDMA-CENTRIC new file mode 120000 index 000000000000..8bcc02cca148 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/RDMA-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/TCP-CENTRIC b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/TCP-CENTRIC new file mode 120000 index 000000000000..7ac6cc7160ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/TCP-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t0.j2 new file mode 100644 index 000000000000..102169973943 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t0.j2 @@ -0,0 +1,10 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% if PORT_ALL.append("Ethernet0") %}{% endif %} + {% if PORT_ALL.append("Ethernet1") %}{% endif %} + {% if PORT_ALL.append("Ethernet2") %}{% endif %} + {% if PORT_ALL.append("Ethernet3") %}{% endif %} + {% for port_idx in range(1,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t1.j2 new file mode 100644 index 000000000000..102169973943 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffer_ports_t1.j2 @@ -0,0 +1,10 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% if PORT_ALL.append("Ethernet0") %}{% endif %} + {% if PORT_ALL.append("Ethernet1") %}{% endif %} + {% if PORT_ALL.append("Ethernet2") %}{% endif %} + {% if PORT_ALL.append("Ethernet3") %}{% endif %} + {% for port_idx in range(1,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 deleted file mode 100644 index 022489a39140..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 +++ /dev/null @@ -1,49 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% if PORT_ALL.append("Ethernet0") %}{% endif %} - {% if PORT_ALL.append("Ethernet1") %}{% endif %} - {% if PORT_ALL.append("Ethernet2") %}{% endif %} - {% if PORT_ALL.append("Ethernet3") %}{% endif %} - {% for port_idx in range(1,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 deleted file mode 100644 index 022489a39140..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 +++ /dev/null @@ -1,49 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% if PORT_ALL.append("Ethernet0") %}{% endif %} - {% if PORT_ALL.append("Ethernet1") %}{% endif %} - {% if PORT_ALL.append("Ethernet2") %}{% endif %} - {% if PORT_ALL.append("Ethernet3") %}{% endif %} - {% for port_idx in range(1,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini deleted file mode 100644 index 389a7da97287..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 1000 5m 41808 18432 40560 -3 2496 - 10000 5m 41808 18432 40560 -3 2496 - 40000 5m 46384 18432 45136 -3 2496 - 50000 5m 46592 18432 45344 -3 2496 - 100000 5m 48464 18432 47216 -3 2496 - 1000 40m 41808 18432 40560 -3 2496 - 10000 40m 41808 18432 40560 -3 2496 - 40000 40m 48464 18432 47216 -3 2496 - 50000 40m 49296 18432 48048 -3 2496 - 100000 40m 53872 18432 52624 -3 2496 - 1000 300m 41808 18432 40560 -3 2496 - 10000 300m 41808 18432 40560 -3 2496 - 40000 300m 64064 18432 62816 -3 2496 - 50000 300m 68848 18432 67600 -3 2496 - 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/BALANCED b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/BALANCED new file mode 120000 index 000000000000..808c3d86217f --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/BALANCED \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/RDMA-CENTRIC b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/RDMA-CENTRIC new file mode 120000 index 000000000000..8bcc02cca148 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/RDMA-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/TCP-CENTRIC b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/TCP-CENTRIC new file mode 120000 index 000000000000..7ac6cc7160ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/gen/TCP-CENTRIC \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t0.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t0.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t1.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffer_ports_t1.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini deleted file mode 100644 index d8190e4893de..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini +++ /dev/null @@ -1,11 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 40000 5m 46384 18432 45136 -3 2496 - 50000 5m 46592 18432 45344 -3 2496 - 100000 5m 48464 18432 47216 -3 2496 - 40000 40m 48464 18432 47216 -3 2496 - 50000 40m 49296 18432 48048 -3 2496 - 100000 40m 53872 18432 52624 -3 2496 - 40000 300m 64064 18432 62816 -3 2496 - 50000 300m 68848 18432 67600 -3 2496 - 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t0.j2 b/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..c7abe4e5b0b7 --- /dev/null +++ b/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t0.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t0.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t1.j2 b/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..92a1841528ab --- /dev/null +++ b/device/common/profiles/td2/6000/BALANCED/buffers_defaults_t1.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t1.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/6000/BALANCED/pg_profile_lookup.ini b/device/common/profiles/td2/6000/BALANCED/pg_profile_lookup.ini new file mode 100644 index 000000000000..9f2eacb6fc42 --- /dev/null +++ b/device/common/profiles/td2/6000/BALANCED/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 56368 18432 55120 -3 2496 + 25000 5m 56368 18432 55120 -3 2496 + 40000 5m 56368 18432 55120 -3 2496 + 50000 5m 56368 18432 55120 -3 2496 + 100000 5m 56368 18432 55120 -3 2496 + 10000 40m 56368 18432 55120 -3 2496 + 25000 40m 56368 18432 55120 -3 2496 + 40000 40m 56368 18432 55120 -3 2496 + 50000 40m 56368 18432 55120 -3 2496 + 100000 40m 56368 18432 55120 -3 2496 + 10000 300m 56368 18432 55120 -3 2496 + 25000 300m 56368 18432 55120 -3 2496 + 40000 300m 56368 18432 55120 -3 2496 + 50000 300m 56368 18432 55120 -3 2496 + 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/common/profiles/td2/6000/BALANCED/qos.json.j2 b/device/common/profiles/td2/6000/BALANCED/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/common/profiles/td2/6000/BALANCED/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t0.j2 b/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..c7abe4e5b0b7 --- /dev/null +++ b/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t0.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t0.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t1.j2 b/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..92a1841528ab --- /dev/null +++ b/device/common/profiles/td2/6000/RDMA-CENTRIC/buffers_defaults_t1.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t1.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/6000/RDMA-CENTRIC/pg_profile_lookup.ini b/device/common/profiles/td2/6000/RDMA-CENTRIC/pg_profile_lookup.ini new file mode 100644 index 000000000000..9f2eacb6fc42 --- /dev/null +++ b/device/common/profiles/td2/6000/RDMA-CENTRIC/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 56368 18432 55120 -3 2496 + 25000 5m 56368 18432 55120 -3 2496 + 40000 5m 56368 18432 55120 -3 2496 + 50000 5m 56368 18432 55120 -3 2496 + 100000 5m 56368 18432 55120 -3 2496 + 10000 40m 56368 18432 55120 -3 2496 + 25000 40m 56368 18432 55120 -3 2496 + 40000 40m 56368 18432 55120 -3 2496 + 50000 40m 56368 18432 55120 -3 2496 + 100000 40m 56368 18432 55120 -3 2496 + 10000 300m 56368 18432 55120 -3 2496 + 25000 300m 56368 18432 55120 -3 2496 + 40000 300m 56368 18432 55120 -3 2496 + 50000 300m 56368 18432 55120 -3 2496 + 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/common/profiles/td2/6000/RDMA-CENTRIC/qos.json.j2 b/device/common/profiles/td2/6000/RDMA-CENTRIC/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/common/profiles/td2/6000/RDMA-CENTRIC/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/common/profiles/td2/6000/TCP-CENTRIC b/device/common/profiles/td2/6000/TCP-CENTRIC new file mode 120000 index 000000000000..d6f7127aa748 --- /dev/null +++ b/device/common/profiles/td2/6000/TCP-CENTRIC @@ -0,0 +1 @@ +BALANCED \ No newline at end of file diff --git a/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t0.j2 b/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..c7abe4e5b0b7 --- /dev/null +++ b/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t0.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t0.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t1.j2 b/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..92a1841528ab --- /dev/null +++ b/device/common/profiles/td2/gen/BALANCED/buffers_defaults_t1.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t1.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/gen/BALANCED/pg_profile_lookup.ini b/device/common/profiles/td2/gen/BALANCED/pg_profile_lookup.ini new file mode 100644 index 000000000000..389a7da97287 --- /dev/null +++ b/device/common/profiles/td2/gen/BALANCED/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 1000 5m 41808 18432 40560 -3 2496 + 10000 5m 41808 18432 40560 -3 2496 + 40000 5m 46384 18432 45136 -3 2496 + 50000 5m 46592 18432 45344 -3 2496 + 100000 5m 48464 18432 47216 -3 2496 + 1000 40m 41808 18432 40560 -3 2496 + 10000 40m 41808 18432 40560 -3 2496 + 40000 40m 48464 18432 47216 -3 2496 + 50000 40m 49296 18432 48048 -3 2496 + 100000 40m 53872 18432 52624 -3 2496 + 1000 300m 41808 18432 40560 -3 2496 + 10000 300m 41808 18432 40560 -3 2496 + 40000 300m 64064 18432 62816 -3 2496 + 50000 300m 68848 18432 67600 -3 2496 + 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/common/profiles/td2/gen/BALANCED/qos.json.j2 b/device/common/profiles/td2/gen/BALANCED/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/common/profiles/td2/gen/BALANCED/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 b/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..c7abe4e5b0b7 --- /dev/null +++ b/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t0.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t0.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 b/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..92a1841528ab --- /dev/null +++ b/device/common/profiles/td2/gen/RDMA-CENTRIC/buffers_defaults_t1.j2 @@ -0,0 +1,40 @@ +{%- set default_cable = '0m' %} + +{%- include 'buffer_ports_t1.j2' %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "12766208", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "12766208", + "type": "egress", + "mode": "static" + }, + "egress_lossy_pool": { + "size": "7326924", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"egress_lossless_pool", + "size":"0", + "static_th":"12766208" + }, + "egress_lossy_profile": { + "pool":"egress_lossy_pool", + "size":"1518", + "dynamic_th":"3" + } + }, +{%- endmacro %} diff --git a/device/common/profiles/td2/gen/RDMA-CENTRIC/pg_profile_lookup.ini b/device/common/profiles/td2/gen/RDMA-CENTRIC/pg_profile_lookup.ini new file mode 100644 index 000000000000..389a7da97287 --- /dev/null +++ b/device/common/profiles/td2/gen/RDMA-CENTRIC/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 1000 5m 41808 18432 40560 -3 2496 + 10000 5m 41808 18432 40560 -3 2496 + 40000 5m 46384 18432 45136 -3 2496 + 50000 5m 46592 18432 45344 -3 2496 + 100000 5m 48464 18432 47216 -3 2496 + 1000 40m 41808 18432 40560 -3 2496 + 10000 40m 41808 18432 40560 -3 2496 + 40000 40m 48464 18432 47216 -3 2496 + 50000 40m 49296 18432 48048 -3 2496 + 100000 40m 53872 18432 52624 -3 2496 + 1000 300m 41808 18432 40560 -3 2496 + 10000 300m 41808 18432 40560 -3 2496 + 40000 300m 64064 18432 62816 -3 2496 + 50000 300m 68848 18432 67600 -3 2496 + 100000 300m 92976 18432 91728 -3 2496 diff --git a/device/common/profiles/td2/gen/RDMA-CENTRIC/qos.json.j2 b/device/common/profiles/td2/gen/RDMA-CENTRIC/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/common/profiles/td2/gen/RDMA-CENTRIC/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/common/profiles/td2/gen/TCP-CENTRIC b/device/common/profiles/td2/gen/TCP-CENTRIC new file mode 120000 index 000000000000..c1162371df69 --- /dev/null +++ b/device/common/profiles/td2/gen/TCP-CENTRIC @@ -0,0 +1 @@ +BALANCED/ \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/BALANCED b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/BALANCED new file mode 120000 index 000000000000..af1545f14b74 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/BALANCED \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/RDMA-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/RDMA-CENTRIC new file mode 120000 index 000000000000..f65c31fb2e59 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/RDMA-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/TCP-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/TCP-CENTRIC new file mode 120000 index 000000000000..46569c641476 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/TCP-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t0.j2 new file mode 100644 index 000000000000..eb2755f69f9b --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t0.j2 @@ -0,0 +1,24 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,8) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(8,14) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(14,18) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(18,24) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(24,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t1.j2 new file mode 100644 index 000000000000..eb2755f69f9b --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffer_ports_t1.j2 @@ -0,0 +1,24 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,8) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(8,14) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(14,18) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(18,24) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(24,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 deleted file mode 100755 index 73da607ee36c..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 +++ /dev/null @@ -1,63 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,8) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(8,14) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(14,18) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(18,24) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(24,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 deleted file mode 100755 index 73da607ee36c..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 +++ /dev/null @@ -1,63 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,8) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(8,14) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(14,18) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(18,24) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(24,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini deleted file mode 100755 index 9f2eacb6fc42..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 deleted file mode 100755 index 3e548325ea30..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/BALANCED b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/BALANCED new file mode 120000 index 000000000000..af1545f14b74 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/BALANCED \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/RDMA-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/RDMA-CENTRIC new file mode 120000 index 000000000000..f65c31fb2e59 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/RDMA-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/TCP-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/TCP-CENTRIC new file mode 120000 index 000000000000..46569c641476 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/TCP-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t0.j2 new file mode 100644 index 000000000000..8022ef6ac62f --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t0.j2 @@ -0,0 +1,15 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,16) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(16,25) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(25,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t1.j2 new file mode 100644 index 000000000000..f68696528a51 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffer_ports_t1.j2 @@ -0,0 +1,16 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,16) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(16,25) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + + {% endfor %} + {% for port_idx in range(25,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 deleted file mode 100755 index 1250d604b3ca..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 +++ /dev/null @@ -1,55 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,16) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(16,25) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - - {% endfor %} - {% for port_idx in range(25,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 deleted file mode 100755 index 1250d604b3ca..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 +++ /dev/null @@ -1,55 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,16) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(16,25) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - - {% endfor %} - {% for port_idx in range(25,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini deleted file mode 100755 index 9f2eacb6fc42..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 deleted file mode 100755 index 3e548325ea30..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/BALANCED b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/BALANCED new file mode 120000 index 000000000000..af1545f14b74 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/BALANCED \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/RDMA-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/RDMA-CENTRIC new file mode 120000 index 000000000000..f65c31fb2e59 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/RDMA-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/TCP-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/TCP-CENTRIC new file mode 120000 index 000000000000..46569c641476 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/TCP-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t0.j2 new file mode 100644 index 000000000000..520c2cb112a6 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t0.j2 @@ -0,0 +1,39 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,1) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(1,2) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(2,3) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(3,4) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(4,5) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(5,6) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(6,7) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(7,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t1.j2 new file mode 100644 index 000000000000..520c2cb112a6 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffer_ports_t1.j2 @@ -0,0 +1,39 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,1) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(1,2) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(2,3) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(3,4) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(4,5) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(5,6) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} + {% for port_idx in range(6,7) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} + {% endfor %} + {% for port_idx in range(7,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 deleted file mode 100755 index 942948a6b5be..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 +++ /dev/null @@ -1,78 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,1) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(1,2) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(2,3) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(3,4) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(4,5) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(5,6) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(6,7) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(7,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 deleted file mode 100755 index 942948a6b5be..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 +++ /dev/null @@ -1,78 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,1) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(1,2) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(2,3) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(3,4) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(4,5) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(5,6) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} - {% for port_idx in range(6,7) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 1)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 2)) %}{% endif %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4 + 3)) %}{% endif %} - {% endfor %} - {% for port_idx in range(7,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini deleted file mode 100755 index 9f2eacb6fc42..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 deleted file mode 100755 index 3e548325ea30..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/BALANCED b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/BALANCED new file mode 120000 index 000000000000..af1545f14b74 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/BALANCED @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/BALANCED \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/RDMA-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/RDMA-CENTRIC new file mode 120000 index 000000000000..f65c31fb2e59 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/RDMA-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/RDMA-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/TCP-CENTRIC b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/TCP-CENTRIC new file mode 120000 index 000000000000..46569c641476 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/TCP-CENTRIC @@ -0,0 +1 @@ +../../../common/profiles/td2/6000/TCP-CENTRIC \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t0.j2 new file mode 100644 index 000000000000..fb4c13c5c794 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t0.j2 @@ -0,0 +1,7 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} + diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t1.j2 new file mode 100644 index 000000000000..48bbf2fc121e --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffer_ports_t1.j2 @@ -0,0 +1,6 @@ +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {% for port_idx in range(0,32) %} + {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} + {% endfor %} +{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..9524e6a476ac --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 deleted file mode 100644 index 613cfc31b30b..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '0m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"ingress_lossless_pool", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"egress_lossless_pool", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"egress_lossy_pool", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..c25cc95d6d57 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +BALANCED/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini new file mode 120000 index 000000000000..297cddb2d223 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/pg_profile_lookup.ini @@ -0,0 +1 @@ +BALANCED/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 new file mode 120000 index 000000000000..aef6b6765cf2 --- /dev/null +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/qos.json.j2 @@ -0,0 +1 @@ +BALANCED/qos.json.j2 \ No newline at end of file From a6a942721508f22eb0806c76295c86b55fa61755 Mon Sep 17 00:00:00 2001 From: Andrew Imeson Date: Fri, 18 Nov 2022 02:00:16 -0500 Subject: [PATCH 05/19] [docs] Correct clone instructions & typos (#12733) [docs] Correct clone instructions & typos Remove the git 1.9 reference, as it has been out since Feb 2014 at this point. --- README.buildsystem.md | 6 +++--- README.md | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/README.buildsystem.md b/README.buildsystem.md index 8f7fa3b9d780..74ec12182a87 100644 --- a/README.buildsystem.md +++ b/README.buildsystem.md @@ -55,7 +55,7 @@ You might find **rules/config** very useful, as it is a configuration file for a **dockers/** directory is a place where you can find Dockerfiles for generic docker images. **src/** is a place where a source code for generic packages goes. It has both submodules (simple case, just run dpkg-buildpackage to build), -and directories with more complcated components, that provide their own Makefiles. +and directories with more complicated components, that provide their own Makefiles. **platform/** contains all vendor-specific recipes, submodules etc. Every **platform/[VENDOR]/** directory is a derived part of buildimage frontend, that defines rules and targets for a concrete vendor. @@ -119,7 +119,7 @@ SONIC_PYTHON_STDEB_DEBS += $(SOME_NEW_DEB) # add package to this target group **SONIC_MAKE_DEBS** This is a bit more flexible case. -If you have to do some specific type of build or apply pathes prior to build, just define your own Makefile and add it to buildimage. +If you have to do some specific type of build or apply paths prior to build, just define your own Makefile and add it to buildimage. Define: ```make SOME_NEW_DEB = some_new_deb.deb # name of your package @@ -178,7 +178,7 @@ SONIC_SIMPLE_DOCKER_IMAGES += $(SOME_DOCKER) # add docker to this group ``` **SONIC_DOCKER_IMAGES** -This one is a bit more sophisticated. You can define debian packages from buildimage that will be installed to it, and corresponding Dockerfile will be dinamically generated from a template. +This one is a bit more sophisticated. You can define debian packages from buildimage that will be installed to it, and corresponding Dockerfile will be dynamically generated from a template. Define: ```make SOME_DOCKER = some_docker.gz # name of your docker diff --git a/README.md b/README.md index cda483fbd941..fdc0058151fa 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,11 @@ sudo pip3 install j2cli * Add current user to the docker group: `sudo gpasswd -a ${USER} docker` * Log out and log back in so that your group membership is re-evaluated -## Clone or fetch the code repository with all git submodules -To clone the code repository recursively, assuming git version 1.9 or newer: +## Clone the repository with all the git submodules - git clone https://github.com/sonic-net/sonic-buildimage.git +To clone the code repository recursively: + + git clone --recurse-submodules https://github.com/sonic-net/sonic-buildimage.git ## Usage From 23962a8979ea25bfc2e17535df89d8c821c6138c Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Fri, 18 Nov 2022 22:24:13 +0100 Subject: [PATCH 06/19] [Arista] Update platform library submodules (#12736) add partial reboot cause support for linecards add watchdog support for linecards add power draw information for chassis properly implement Chassis.get_port_or_cage_type fix pcieutil on chassis with powered off cards fix watchdog-control.service crash misc fixes and cleanups --- platform/barefoot/sonic-platform-modules-arista | 2 +- platform/broadcom/sonic-platform-modules-arista | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-arista b/platform/barefoot/sonic-platform-modules-arista index 2eae0dd1ad35..5fb4dd63dde3 160000 --- a/platform/barefoot/sonic-platform-modules-arista +++ b/platform/barefoot/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 2eae0dd1ad35b6fd5a78f3eebed466f2744d4fdc +Subproject commit 5fb4dd63dde377542782280a778215c7058d2a71 diff --git a/platform/broadcom/sonic-platform-modules-arista b/platform/broadcom/sonic-platform-modules-arista index 2eae0dd1ad35..5fb4dd63dde3 160000 --- a/platform/broadcom/sonic-platform-modules-arista +++ b/platform/broadcom/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 2eae0dd1ad35b6fd5a78f3eebed466f2744d4fdc +Subproject commit 5fb4dd63dde377542782280a778215c7058d2a71 From 4be5f1ed310e3ec1faf74532da3686249ccb91e4 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Sat, 19 Nov 2022 15:30:34 +0800 Subject: [PATCH 07/19] Revert SSHD config change. (#12729) Revert SSHD config change. #### Why I did it Some test case and code may impact by SSHD config change. #### How I did it Revert following change in build_debian.sh script: ClientAliveInterval change back to 900. MaxAuthTries change back to default value. Banner change to disabled. #### How to verify it Pass all E2E test case. #### Which release branch to backport (provide reason below if selected) - [ ] 201811 - [ ] 201911 - [ ] 202006 - [ ] 202012 - [ ] 202106 - [ ] 202111 - [ ] 202205 #### Description for the changelog Revert SSHD config change. #### Link to config_db schema for YANG module changes #### A picture of a cute animal (not mandatory but encouraged) --- build_debian.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/build_debian.sh b/build_debian.sh index c4d748ac4d21..3d34f8f29c51 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -468,16 +468,12 @@ rm /files/etc/ssh/sshd_config/ClientAliveInterval rm /files/etc/ssh/sshd_config/ClientAliveCountMax touch /files/etc/ssh/sshd_config/EmptyLineHack rename /files/etc/ssh/sshd_config/EmptyLineHack "" -set /files/etc/ssh/sshd_config/ClientAliveInterval 300 +set /files/etc/ssh/sshd_config/ClientAliveInterval 900 set /files/etc/ssh/sshd_config/ClientAliveCountMax 0 ins #comment before /files/etc/ssh/sshd_config/ClientAliveInterval -set /files/etc/ssh/sshd_config/#comment[following-sibling::*[1][self::ClientAliveInterval]] "Close inactive client sessions after 5 minutes" -rm /files/etc/ssh/sshd_config/MaxAuthTries -set /files/etc/ssh/sshd_config/MaxAuthTries 3 +set /files/etc/ssh/sshd_config/#comment[following-sibling::*[1][self::ClientAliveInterval]] "Close inactive client sessions after 15 minutes" rm /files/etc/ssh/sshd_config/LogLevel set /files/etc/ssh/sshd_config/LogLevel VERBOSE -rm /files/etc/ssh/sshd_config/Banner -set /files/etc/ssh/sshd_config/Banner /etc/issue save quit EOF From 46bd5f695c8b3a08ce93f957091a053dd9482e8d Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Sat, 19 Nov 2022 21:45:37 +0100 Subject: [PATCH 08/19] [Arista] Update platform.json for 7260CX3-64 (#12757) Why I did it Some sonic-mgmt platform_tests/api were failing on the 7260CX3-64 How I did it Added the missing metadata in platform.json and platform_components.json This is purely test data and does not impact our API implementation. How to verify it Run platform_tests/api and expect 100% passrate. --- .../x86_64-arista_7260cx3_64/platform.json | 83 ++++++++++++------- .../platform_components.json | 14 ++++ 2 files changed, 67 insertions(+), 30 deletions(-) create mode 100644 device/arista/x86_64-arista_7260cx3_64/platform_components.json diff --git a/device/arista/x86_64-arista_7260cx3_64/platform.json b/device/arista/x86_64-arista_7260cx3_64/platform.json index a646ce80945e..522c5b61b0c8 100644 --- a/device/arista/x86_64-arista_7260cx3_64/platform.json +++ b/device/arista/x86_64-arista_7260cx3_64/platform.json @@ -1,7 +1,26 @@ { "chassis": { "name": "DCS-7260CX3-64", - "components": [], + "components": [ + { + "name": "Aboot()" + }, + { + "name": "Scd(addr=0000:06:00.0)" + }, + { + "name": "Scd(addr=0000:ff:0b.3)" + }, + { + "name": "Ucd90160(addr=74-004e)" + }, + { + "name": "Ucd90120A(addr=83-0034)" + }, + { + "name": "RookSysCpld(addr=81-0023)" + } + ], "fans": [], "fan_drawers": [ { @@ -40,55 +59,59 @@ "psus": [ { "name": "psu1", - "fans": [] + "fans": [ + { + "name": "psu1/1", + "speed": { + "controllable": false + } + } + ] }, { "name": "psu2", - "fans": [] + "fans": [ + { + "name": "psu2/1", + "speed": { + "controllable": false + } + } + ] } ], "thermals": [ { - "name": "Board sensor" - }, - { - "name": "PCH temp sensor" - }, - { - "name": "Physical id 0" - }, - { - "name": "CPU core0 temp sensor" - }, - { - "name": "CPU core1 temp sensor" - }, - { - "name": "CPU board temp sensor" - }, - { - "name": "Back-panel temp sensor" + "name": "Board sensor", + "controllable": false }, { - "name": "Front-panel temp sensor" + "name": "PCH temp sensor", + "controllable": false }, { - "name": "Power supply 1 hotspot sensor" + "name": "Physical id 0", + "controllable": false }, { - "name": "Power supply 1 inlet temp sensor" + "name": "CPU core0 temp sensor", + "controllable": false }, { - "name": "Power supply 1 exhaust temp sensor" + "name": "CPU core1 temp sensor", + "controllable": false }, { - "name": "Power supply 2 hotspot sensor" + "name": "CPU board temp sensor", + "controllable": false }, { - "name": "Power supply 2 inlet temp sensor" + "name": "Back-panel temp sensor", + "controllable": false }, { - "name": "Power supply 2 exhaust temp sensor" + "name": "Front-panel temp sensor", + "controllable": false } ], "sfps": [ @@ -1528,4 +1551,4 @@ } } } -} \ No newline at end of file +} diff --git a/device/arista/x86_64-arista_7260cx3_64/platform_components.json b/device/arista/x86_64-arista_7260cx3_64/platform_components.json new file mode 100644 index 000000000000..a95e59009f06 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/platform_components.json @@ -0,0 +1,14 @@ +{ + "chassis": { + "DCS-7260CX3-64": { + "component": { + "Aboot()": {}, + "Scd(addr=0000:06:00.0)": {}, + "Scd(addr=0000:ff:0b.3)": {}, + "Ucd90160(addr=74-004e)": {}, + "Ucd90120A(addr=83-0034)": {}, + "RookSysCpld(addr=81-0023)": {} + } + } + } +} From 1302a31eee5f5284eccb13d0f16ba229cfd528bf Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Sat, 19 Nov 2022 21:46:08 +0100 Subject: [PATCH 09/19] [Arista] Update phy-credo package (#12755) Why I did it A recent migration of SonicV2Connector from swsssdk to swsscommon.swsscommon broke phy-credo. How I did it Change the import path while keeping a fallback on the previous one for 202205 How to verify it phy-credo.service no longer fails due to an import error --- rules/phy-credo.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/phy-credo.mk b/rules/phy-credo.mk index 197888e518bf..2ade08eba19d 100644 --- a/rules/phy-credo.mk +++ b/rules/phy-credo.mk @@ -1,3 +1,3 @@ PHY_CREDO = phy-credo_1.0_amd64.deb -$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/e89a1696954fd381e1e95edf208cffc97caf15d4/phy/phy-credo_1.0_amd64.deb" +$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/446f30ccd8626f904d89d5798da7294948e090a6/phy/phy-credo_1.0_amd64.deb" SONIC_ONLINE_DEBS += $(PHY_CREDO) From bc174c686c5b15c267353b81e979478a2ef85273 Mon Sep 17 00:00:00 2001 From: jcaiMR <111116206+jcaiMR@users.noreply.github.com> Date: Sun, 20 Nov 2022 20:20:31 +0800 Subject: [PATCH 10/19] add fix for key not exists case (#12769) --- src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py b/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py index 0af4bc26d040..f9b5993fd1f9 100644 --- a/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py +++ b/src/sonic-bgpcfgd/bgpcfgd/static_rt_timer.py @@ -16,6 +16,9 @@ def __init__(self): def set_timer(self): """ Check for custom route expiry time in STATIC_ROUTE:EXPIRY_TIME """ + keys = self.db.keys(self.db.APPL_DB, "STATIC_ROUTE_EXPIRY_TIME") + if len(keys) == 0: + return timer = self.db.get(self.db.APPL_DB, "STATIC_ROUTE_EXPIRY_TIME", "time") if timer is not None: timer = int(timer) From 6448afd338dc9eebc1624a581199fd76a3ab6dba Mon Sep 17 00:00:00 2001 From: Konstantin Vasin Date: Mon, 21 Nov 2022 03:05:16 +0300 Subject: [PATCH 11/19] [Build] set apt Acquire::Retries to 3 for bullseye (#12758) Why I did it There were some changes in apt source code in version 2.1.9. As a result apt used in bullseye (2.2.4) is intolerant to network issues. This was fixed in https://salsa.debian.org/apt-team/apt/-/commit/10631550f1f9788bdfd64d2434237a1448ab0626 Already fixed version is used in bookworm (2.5.4) And not yet affected version is used in buster (1.8.2.3) How I did it Set Acquire::Retries to 3 for sonic-slave-bullseye, docker-base-bullseye and final Debian image. Ref: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1876035 Signed-off-by: Konstantin Vasin k.vasin@yadro.com --- build_debian.sh | 2 +- dockers/docker-base-bullseye/Dockerfile.j2 | 1 + dockers/docker-base-bullseye/apt-multiple-retries | 4 ++++ files/apt/apt.conf.d/apt-multiple-retries | 4 ++++ sonic-slave-bullseye/Dockerfile.j2 | 1 + sonic-slave-bullseye/apt-multiple-retries | 4 ++++ 6 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 dockers/docker-base-bullseye/apt-multiple-retries create mode 100644 files/apt/apt.conf.d/apt-multiple-retries create mode 100644 sonic-slave-bullseye/apt-multiple-retries diff --git a/build_debian.sh b/build_debian.sh index 3d34f8f29c51..1486be65c0fd 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -110,7 +110,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT mount ## Pointing apt to public apt mirrors and getting latest packages, needed for latest security updates scripts/build_mirror_config.sh files/apt $CONFIGURED_ARCH $IMAGE_DISTRO sudo cp files/apt/sources.list.$CONFIGURED_ARCH $FILESYSTEM_ROOT/etc/apt/sources.list -sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/ +sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until,apt-multiple-retries} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/ ## Note: set lang to prevent locale warnings in your chroot sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y update diff --git a/dockers/docker-base-bullseye/Dockerfile.j2 b/dockers/docker-base-bullseye/Dockerfile.j2 index c237015500df..6f124b7cdb48 100644 --- a/dockers/docker-base-bullseye/Dockerfile.j2 +++ b/dockers/docker-base-bullseye/Dockerfile.j2 @@ -30,6 +30,7 @@ COPY ["dpkg_01_drop", "/etc/dpkg/dpkg.cfg.d/01_drop"] COPY ["sources.list.{{ CONFIGURED_ARCH }}", "/etc/apt/sources.list"] COPY ["no_install_recommend_suggest", "/etc/apt/apt.conf.d"] COPY ["no-check-valid-until", "/etc/apt/apt.conf.d"] +COPY ["apt-multiple-retries", "/etc/apt/apt.conf.d"] # Update apt cache and # pre-install fundamental packages diff --git a/dockers/docker-base-bullseye/apt-multiple-retries b/dockers/docker-base-bullseye/apt-multiple-retries new file mode 100644 index 000000000000..c4c638252f92 --- /dev/null +++ b/dockers/docker-base-bullseye/apt-multiple-retries @@ -0,0 +1,4 @@ +# Instruct apt to retry downloads on failures +# This is required only for bullseye. + +Acquire::Retries "3"; diff --git a/files/apt/apt.conf.d/apt-multiple-retries b/files/apt/apt.conf.d/apt-multiple-retries new file mode 100644 index 000000000000..c4c638252f92 --- /dev/null +++ b/files/apt/apt.conf.d/apt-multiple-retries @@ -0,0 +1,4 @@ +# Instruct apt to retry downloads on failures +# This is required only for bullseye. + +Acquire::Retries "3"; diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index b22639e8318b..f4f24d847e84 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -22,6 +22,7 @@ FROM {{ prefix }}debian:bullseye MAINTAINER gulv@microsoft.com COPY ["no-check-valid-until", "/etc/apt/apt.conf.d/"] +COPY ["apt-multiple-retries", "/etc/apt/apt.conf.d/"] {%- if CROSS_BUILD_ENVIRON != "y" %} COPY ["sources.list.{{ CONFIGURED_ARCH }}", "/etc/apt/sources.list"] diff --git a/sonic-slave-bullseye/apt-multiple-retries b/sonic-slave-bullseye/apt-multiple-retries new file mode 100644 index 000000000000..c4c638252f92 --- /dev/null +++ b/sonic-slave-bullseye/apt-multiple-retries @@ -0,0 +1,4 @@ +# Instruct apt to retry downloads on failures +# This is required only for bullseye. + +Acquire::Retries "3"; From 68805fbd06a52362d9f09a4d8263c847d849a670 Mon Sep 17 00:00:00 2001 From: Yutong Zhang <90831468+yutongzhang-microsoft@users.noreply.github.com> Date: Mon, 21 Nov 2022 10:34:23 +0800 Subject: [PATCH 12/19] [TestbedV2] Add wan topo test using TestbedV2. (#12751) Add wan topo test using TestbedV2. Why I did it Add wan topo test using TestbedV2. How I did it Add a job to run wan topo in pr test. Signed-off-by: Yutong Zhang --- azure-pipelines.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 073702ba3f68..48ec41a0306e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -364,3 +364,18 @@ stages: COMMON_EXTRA_PARAMS: "--neighbor_type=sonic --enable_macsec --macsec_profile=128_SCI,256_XPN_SCI" VM_TYPE: vsonic SPECIFIED_PARAMS: '{\"test_pretest.py\":[\"--completeness_level=confident\",\"--allow_recover\"],\"test_posttest.py\":[\"--completeness_level=confident\",\"--allow_recover\"]}' + + - job: wan_testbedv2 + displayName: "kvmtest-wan by TestbedV2" + pool: + vmImage: 'ubuntu-20.04' + timeoutInMinutes: 1080 + condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) + continueOnError: true + steps: + - template: .azure-pipelines/run-test-scheduler-template.yml + parameters: + TOPOLOGY: wan-pub + MIN_WORKER: 1 + MAX_WORKER: 1 + COMMON_EXTRA_PARAMS: "--skip_sanity " From 5503f95b55e5adba644f76ed4a6d2f08dc859469 Mon Sep 17 00:00:00 2001 From: ganglv <88995770+ganglyu@users.noreply.github.com> Date: Mon, 21 Nov 2022 11:31:06 +0800 Subject: [PATCH 13/19] Update sonic-host-services submodule (#12750) Why I did it Need sonic-host-services to support "config reload" and "config apply-patch" How I did it I have updated sonic-host-services repo, and I update the submodule with this PR How to verify it Build image and run unit test. --- src/sonic-host-services | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-host-services b/src/sonic-host-services index 6eac2d3bb254..d3a4cf1f6c4d 160000 --- a/src/sonic-host-services +++ b/src/sonic-host-services @@ -1 +1 @@ -Subproject commit 6eac2d3bb25405cd03424ece6ec8a469b7b9844c +Subproject commit d3a4cf1f6c4dd633cfe9b07dfc26331238d79f37 From 9734b427ffca16b269642358d70618aac2b8983c Mon Sep 17 00:00:00 2001 From: "Richard.Yu" Date: Mon, 21 Nov 2022 12:50:39 +0800 Subject: [PATCH 14/19] [SAI PTF]Support sai ptf v2 Syncd-rpc (#12761) Make syncd rpc docker which supports sai-ptf v2 local bulild the target NOSTRETCH=y NOJESSIE=y make configure PLATFORM=vs NOSTRETCH=y NOJESSIE=y NOBULLSEYE=y SAITHRIFT_V2=y make target/docker-ptf-sai.gz NOSTRETCH=y NOJESSIE=y make configure PLATFORM=vs NOSTRETCH=y NOJESSIE=y NOBULLSEYE=y make target/docker-ptf.gz NOSTRETCH=y NOJESSIE=y make configure PLATFORM=broadcom NOSTRETCH=y NOJESSIE=y ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y make target/docker-syncd-brcm-rpcv2.gz NOSTRETCH=y NOJESSIE=y ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y make target/docker-saiserverv2-brcm.gz Test done: #12619 NOSTRETCH=y NOJESSIE=y make configure PLATFORM=broadcom NOSTRETCH=y NOJESSIE=y ENABLE_SYNCD_RPC=y make target/docker-syncd-brcm-rpc.gz NOSTRETCH=y NOJESSIE=y ENABLE_SYNCD_RPC=y make target/docker-saiserver-brcm.gz Signed-off-by: richardyu-ms Signed-off-by: richardyu-ms --- platform/broadcom/docker-saiserver-brcm.mk | 2 +- platform/broadcom/docker-syncd-brcm-rpc.mk | 22 +++++++++++++++++-- .../docker-syncd-brcm-rpc/Dockerfile.j2 | 1 + rules/syncd.mk | 8 ++++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/platform/broadcom/docker-saiserver-brcm.mk b/platform/broadcom/docker-saiserver-brcm.mk index 2ee39c8600e8..f7684a7d5b76 100644 --- a/platform/broadcom/docker-saiserver-brcm.mk +++ b/platform/broadcom/docker-saiserver-brcm.mk @@ -2,7 +2,7 @@ DOCKER_SAISERVER_BRCM = docker-saiserver$(SAITHRIFT_VER)-brcm.gz $(DOCKER_SAISERVER_BRCM)_PATH = $(PLATFORM_PATH)/docker-saiserver-brcm -$(DOCKER_SAISERVER_BRCM)_DEPENDS += $(SAISERVER) +$(DOCKER_SAISERVER_BRCM)_DEPENDS += $(SAISERVER) $(SAISERVER_DBG) $(DOCKER_SAISERVER_BRCM)_FILES += $(DSSERVE) $(BCMCMD) $(DOCKER_SAISERVER_BRCM)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BULLSEYE) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_BRCM) diff --git a/platform/broadcom/docker-syncd-brcm-rpc.mk b/platform/broadcom/docker-syncd-brcm-rpc.mk index 95810f1cb477..40aba0cb8259 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-rpc.mk @@ -1,8 +1,17 @@ # docker image for brcm syncd with rpc -DOCKER_SYNCD_BRCM_RPC = docker-syncd-brcm-rpc.gz +DOCKER_SYNCD_BRCM_RPC = docker-syncd-brcm-rpc$(SAITHRIFT_VER).gz +DOCKER_SYNCD_BRCM_RPC_DBG = docker-syncd-brcm-rpc$(SAITHRIFT_VER)-$(DBG_IMAGE_MARK).gz $(DOCKER_SYNCD_BRCM_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-brcm-rpc + + +#Support two different versions of thrift +ifeq ($(SAITHRIFT_V2),y) +$(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT_0_14_1) $(LIBTHRIFT_0_14_1_DEV) $(PYTHON3_THRIFT_0_14_1) $(THRIFT_0_14_1_COMPILER) $(PTF) +else $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(PTF) +endif + ifeq ($(INSTALL_DEBUG_TOOLS), y) $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC_DBG) \ $(LIBSWSSCOMMON_DBG) \ @@ -10,12 +19,21 @@ $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC_DBG) \ $(LIBSAIREDIS_DBG) endif $(DOCKER_SYNCD_BRCM_RPC)_FILES += $(DSSERVE) $(BCMCMD) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + $(DOCKER_SYNCD_BRCM_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_BASE) +$(DOCKER_SYNCD_BRCM_RPC)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_DEPENDS) +$(DOCKER_SYNCD_BRCM_RPC)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_IMAGE_PACKAGES) + SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_BRCM_RPC) ifeq ($(ENABLE_SYNCD_RPC),y) SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_BRCM_RPC) endif +SONIC_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_BRCM_RPC_DBG) +ifneq ($(ENABLE_SYNCD_RPC),y) +SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_BRCM_RPC_DBG) +endif + $(DOCKER_SYNCD_BRCM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_BRCM_RPC)_VERSION = 1.0.0+rpc $(DOCKER_SYNCD_BRCM_RPC)_PACKAGE_NAME = syncd @@ -24,9 +42,9 @@ $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro - $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_RPC)_MACHINE = broadcom SONIC_BULLSEYE_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC) +SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC_DBG) diff --git a/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 b/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 index 3517b037a40a..d6583085e2e7 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 +++ b/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 @@ -25,6 +25,7 @@ RUN apt-get update \ cmake \ libqt5core5a \ libqt5network5 \ + gdb \ libboost-atomic1.74.0 RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \ diff --git a/rules/syncd.mk b/rules/syncd.mk index 225f7ec0574c..e62b2a66bc6c 100644 --- a/rules/syncd.mk +++ b/rules/syncd.mk @@ -17,7 +17,13 @@ $(SYNCD_RPC)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(SYNCD),$(SYNCD_RPC))) # Inject libthrift build dependency for RPC build -$(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) $(LIBTHRIFT_DEV) +# Support two different versions of thrift +ifeq ($(SAITHRIFT_V2),y) +$(SYNCD)_DEPENDS += $(LIBTHRIFT_0_14_1_DEV) +else +$(SYNCD)_DEPENDS += $(LIBTHRIFT_DEV) +endif +$(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) $(SYNCD)_DPKG_TARGET = binary-syncd-rpc endif From a618728d91334b7b0ce8e7b3b04c7c508ca2ee65 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Mon, 21 Nov 2022 07:22:26 +0000 Subject: [PATCH 15/19] Revert "[SAI PTF]Support sai ptf v2 Syncd-rpc (#12761)" This reverts commit 9734b427ffca16b269642358d70618aac2b8983c. --- platform/broadcom/docker-saiserver-brcm.mk | 2 +- platform/broadcom/docker-syncd-brcm-rpc.mk | 22 ++----------------- .../docker-syncd-brcm-rpc/Dockerfile.j2 | 1 - rules/syncd.mk | 8 +------ 4 files changed, 4 insertions(+), 29 deletions(-) diff --git a/platform/broadcom/docker-saiserver-brcm.mk b/platform/broadcom/docker-saiserver-brcm.mk index f7684a7d5b76..2ee39c8600e8 100644 --- a/platform/broadcom/docker-saiserver-brcm.mk +++ b/platform/broadcom/docker-saiserver-brcm.mk @@ -2,7 +2,7 @@ DOCKER_SAISERVER_BRCM = docker-saiserver$(SAITHRIFT_VER)-brcm.gz $(DOCKER_SAISERVER_BRCM)_PATH = $(PLATFORM_PATH)/docker-saiserver-brcm -$(DOCKER_SAISERVER_BRCM)_DEPENDS += $(SAISERVER) $(SAISERVER_DBG) +$(DOCKER_SAISERVER_BRCM)_DEPENDS += $(SAISERVER) $(DOCKER_SAISERVER_BRCM)_FILES += $(DSSERVE) $(BCMCMD) $(DOCKER_SAISERVER_BRCM)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BULLSEYE) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_BRCM) diff --git a/platform/broadcom/docker-syncd-brcm-rpc.mk b/platform/broadcom/docker-syncd-brcm-rpc.mk index 40aba0cb8259..95810f1cb477 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-rpc.mk @@ -1,17 +1,8 @@ # docker image for brcm syncd with rpc -DOCKER_SYNCD_BRCM_RPC = docker-syncd-brcm-rpc$(SAITHRIFT_VER).gz -DOCKER_SYNCD_BRCM_RPC_DBG = docker-syncd-brcm-rpc$(SAITHRIFT_VER)-$(DBG_IMAGE_MARK).gz +DOCKER_SYNCD_BRCM_RPC = docker-syncd-brcm-rpc.gz $(DOCKER_SYNCD_BRCM_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-brcm-rpc - - -#Support two different versions of thrift -ifeq ($(SAITHRIFT_V2),y) -$(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT_0_14_1) $(LIBTHRIFT_0_14_1_DEV) $(PYTHON3_THRIFT_0_14_1) $(THRIFT_0_14_1_COMPILER) $(PTF) -else $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT) $(PTF) -endif - ifeq ($(INSTALL_DEBUG_TOOLS), y) $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC_DBG) \ $(LIBSWSSCOMMON_DBG) \ @@ -19,21 +10,12 @@ $(DOCKER_SYNCD_BRCM_RPC)_DEPENDS += $(SYNCD_RPC_DBG) \ $(LIBSAIREDIS_DBG) endif $(DOCKER_SYNCD_BRCM_RPC)_FILES += $(DSSERVE) $(BCMCMD) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) - $(DOCKER_SYNCD_BRCM_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_BASE) -$(DOCKER_SYNCD_BRCM_RPC)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_DEPENDS) -$(DOCKER_SYNCD_BRCM_RPC)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BULLSEYE)_DBG_IMAGE_PACKAGES) - SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_BRCM_RPC) ifeq ($(ENABLE_SYNCD_RPC),y) SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_BRCM_RPC) endif -SONIC_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_BRCM_RPC_DBG) -ifneq ($(ENABLE_SYNCD_RPC),y) -SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_BRCM_RPC_DBG) -endif - $(DOCKER_SYNCD_BRCM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_BRCM_RPC)_VERSION = 1.0.0+rpc $(DOCKER_SYNCD_BRCM_RPC)_PACKAGE_NAME = syncd @@ -42,9 +24,9 @@ $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro + $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_RPC)_MACHINE = broadcom SONIC_BULLSEYE_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC) -SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC_DBG) diff --git a/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 b/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 index d6583085e2e7..3517b037a40a 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 +++ b/platform/broadcom/docker-syncd-brcm-rpc/Dockerfile.j2 @@ -25,7 +25,6 @@ RUN apt-get update \ cmake \ libqt5core5a \ libqt5network5 \ - gdb \ libboost-atomic1.74.0 RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \ diff --git a/rules/syncd.mk b/rules/syncd.mk index e62b2a66bc6c..225f7ec0574c 100644 --- a/rules/syncd.mk +++ b/rules/syncd.mk @@ -17,13 +17,7 @@ $(SYNCD_RPC)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(SYNCD),$(SYNCD_RPC))) # Inject libthrift build dependency for RPC build -# Support two different versions of thrift -ifeq ($(SAITHRIFT_V2),y) -$(SYNCD)_DEPENDS += $(LIBTHRIFT_0_14_1_DEV) -else -$(SYNCD)_DEPENDS += $(LIBTHRIFT_DEV) -endif -$(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) +$(SYNCD)_DEPENDS += $(LIBSWSSCOMMON_DEV) $(LIBTHRIFT_DEV) $(SYNCD)_DPKG_TARGET = binary-syncd-rpc endif From 7b4032e9edd6963404b68ff560fabc765e524897 Mon Sep 17 00:00:00 2001 From: Stephen Sun <5379172+stephenxs@users.noreply.github.com> Date: Mon, 21 Nov 2022 23:04:58 +0800 Subject: [PATCH 16/19] [system health daemon] Support PSU power threshold checking (#11864) --- .../health_checker/hardware_checker.py | 12 +++++++ src/system-health/tests/test_system_health.py | 32 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/system-health/health_checker/hardware_checker.py b/src/system-health/health_checker/hardware_checker.py index 575564de8733..59e47fa26733 100644 --- a/src/system-health/health_checker/hardware_checker.py +++ b/src/system-health/health_checker/hardware_checker.py @@ -239,6 +239,18 @@ def _check_psu_status(self, config): voltage_min_th, voltage_max_th)) continue + + if not self._ignore_check(config.ignore_devices, 'psu', name, 'power_threshold'): + power_overload = data_dict.get('power_overload', None) + if power_overload == 'True': + try: + power = data_dict['power'] + power_critical_threshold = data_dict['power_critical_threshold'] + self.set_object_not_ok('PSU', name, 'power of {} ({}w) exceeds threshold ({}w)'.format(name, power, power_critical_threshold)) + except KeyError: + self.set_object_not_ok('PSU', name, 'power of {} exceeds threshold but power or power_critical_threshold is invalid'.format(name)) + continue + self.set_object_ok('PSU', name) def reset(self): diff --git a/src/system-health/tests/test_system_health.py b/src/system-health/tests/test_system_health.py index ab0a3bcb1145..73beb99cae83 100644 --- a/src/system-health/tests/test_system_health.py +++ b/src/system-health/tests/test_system_health.py @@ -362,6 +362,30 @@ def test_hardware_checker(): 'voltage': '10', 'voltage_min_threshold': '12', 'voltage_max_threshold': '15', + }, + 'PSU_INFO|PSU 6': { + 'presence': 'True', + 'status': 'True', + 'temp': '55', + 'temp_threshold': '100', + 'voltage': '12', + 'voltage_min_threshold': '12', + 'voltage_max_threshold': '15', + 'power_overload': 'True', + 'power': '101.0', + 'power_critical_threshold': '100.0', + 'power_warning_suppress_threshold': '90.0' + }, + 'PSU_INFO|PSU 7': { + 'presence': 'True', + 'status': 'True', + 'temp': '55', + 'temp_threshold': '100', + 'voltage': '12', + 'voltage_min_threshold': '12', + 'voltage_max_threshold': '15', + 'power_overload': 'True', + 'power': '101.0' } }) @@ -400,6 +424,14 @@ def test_hardware_checker(): assert 'PSU 5' in checker._info assert checker._info['PSU 5'][HealthChecker.INFO_FIELD_OBJECT_STATUS] == HealthChecker.STATUS_NOT_OK + assert 'PSU 6' in checker._info + assert checker._info['PSU 6'][HealthChecker.INFO_FIELD_OBJECT_MSG] == 'power of PSU 6 (101.0w) exceeds threshold (100.0w)' + assert checker._info['PSU 6'][HealthChecker.INFO_FIELD_OBJECT_STATUS] == HealthChecker.STATUS_NOT_OK + + assert 'PSU 7' in checker._info + assert checker._info['PSU 7'][HealthChecker.INFO_FIELD_OBJECT_STATUS] == HealthChecker.STATUS_NOT_OK + assert checker._info['PSU 7'][HealthChecker.INFO_FIELD_OBJECT_MSG] == 'power of PSU 7 exceeds threshold but power or power_critical_threshold is invalid' + def test_config(): config = Config() From 77b1be773d5c072ae5c4d4d8056b61da0d08e774 Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Tue, 22 Nov 2022 00:30:34 +0800 Subject: [PATCH 17/19] [submodule] Update sonic-platform-common pointer (#12707) --- src/sonic-platform-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-platform-common b/src/sonic-platform-common index aa86083707c8..d739102d10bb 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit aa86083707c8f6eff24e02df1e5f2198259a8086 +Subproject commit d739102d10bb9b0fd18fd4c38409066651aba7ea From b05d2e3729d4bea243c8b3335b201f6a37c1b87e Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Mon, 21 Nov 2022 18:19:24 +0100 Subject: [PATCH 18/19] [Arista] Update platform.json for 7060CX-32S (#12783) Why I did it Some sonic-mgmt platform_tests/api were failing on the 7060CX-32S How I did it Added the missing metadata in platform.json and platform_components.json This is purely test data and does not impact our API implementation. How to verify it Run platform_tests / api and expect 100% pass rate. --- .../platform_components.json | 2 +- .../x86_64-arista_7060_cx32s/platform.json | 77 ++++++++++++------- .../platform_components.json | 13 ++++ 3 files changed, 62 insertions(+), 30 deletions(-) create mode 100644 device/arista/x86_64-arista_7060_cx32s/platform_components.json diff --git a/device/arista/x86_64-arista_7050cx3_32s/platform_components.json b/device/arista/x86_64-arista_7050cx3_32s/platform_components.json index 0d30d1b13e1b..6fdd182db485 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/platform_components.json +++ b/device/arista/x86_64-arista_7050cx3_32s/platform_components.json @@ -3,7 +3,7 @@ "DCS-7050CX3-32S": { "component": { "Aboot()": {}, - "Scd(addr=0000:00:18.7)": {}, + "Scd(addr=0000:02:00.0)": {}, "Ucd90120A(addr=3-004e)": {}, "Ucd90120A(addr=16-004e)": {}, "CrowSysCpld(addr=2-0023)": {} diff --git a/device/arista/x86_64-arista_7060_cx32s/platform.json b/device/arista/x86_64-arista_7060_cx32s/platform.json index 92c0d40a3758..f322ac0aab87 100644 --- a/device/arista/x86_64-arista_7060_cx32s/platform.json +++ b/device/arista/x86_64-arista_7060_cx32s/platform.json @@ -1,7 +1,23 @@ { "chassis": { "name": "DCS-7060CX-32S", - "components": [], + "components": [ + { + "name": "Aboot()" + }, + { + "name": "Scd(addr=0000:02:00.0)" + }, + { + "name": "Ucd90120A(addr=4-004e)" + }, + { + "name": "Ucd90120A(addr=8-004e)" + }, + { + "name": "CrowSysCpld(addr=2-0023)" + } + ], "fans": [], "fan_drawers": [ { @@ -40,52 +56,55 @@ "psus": [ { "name": "psu1", - "fans": [] + "fans": [ + { + "name": "psu1/1", + "speed": { + "controllable": false + } + } + ] }, { "name": "psu2", - "fans": [] + "fans": [ + { + "name": "psu2/1", + "speed": { + "controllable": false + } + } + ] } ], "thermals": [ { - "name": "Cpu temp sensor" - }, - { - "name": "Cpu board temp sensor" - }, - { - "name": "Back-panel temp sensor" - }, - { - "name": "Board sensor" - }, - { - "name": "Switch chip left sensor" - }, - { - "name": "Switch chip right sensor" - }, - { - "name": "Front-panel temp sensor" + "name": "Cpu temp sensor", + "controllable": false }, { - "name": "Power supply 1 hotspot sensor" + "name": "Cpu board temp sensor", + "controllable": false }, { - "name": "Power supply 1 inlet temp sensor" + "name": "Back-panel temp sensor", + "controllable": false }, { - "name": "Power supply 1 exhaust temp sensor" + "name": "Board sensor", + "controllable": false }, { - "name": "Power supply 2 hotspot sensor" + "name": "Switch chip left sensor", + "controllable": false }, { - "name": "Power supply 2 inlet temp sensor" + "name": "Switch chip right sensor", + "controllable": false }, { - "name": "Power supply 2 exhaust temp sensor" + "name": "Front-panel temp sensor", + "controllable": false } ], "sfps": [ @@ -821,4 +840,4 @@ } } } -} \ No newline at end of file +} diff --git a/device/arista/x86_64-arista_7060_cx32s/platform_components.json b/device/arista/x86_64-arista_7060_cx32s/platform_components.json new file mode 100644 index 000000000000..d7647e359b86 --- /dev/null +++ b/device/arista/x86_64-arista_7060_cx32s/platform_components.json @@ -0,0 +1,13 @@ +{ + "chassis": { + "DCS-7050CX3-32S": { + "component": { + "Aboot()": {}, + "Scd(addr=0000:02:00.0)": {}, + "Ucd90120A(addr=4-004e)": {}, + "Ucd90120A(addr=8-004e)": {}, + "CrowSysCpld(addr=2-0023)": {} + } + } + } +} From 24dc5266c1b411b2b5bd568f439b07ff0c069d54 Mon Sep 17 00:00:00 2001 From: Aravind Mani <53524901+aravindmani-1@users.noreply.github.com> Date: Mon, 21 Nov 2022 23:25:02 +0530 Subject: [PATCH 19/19] [Submodule] Update sonic-utilities pointer (#12760) * [Submodule] update sonic-utilities submodule --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index d5a6da31ef94..94a092dce238 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit d5a6da31ef94e350c2cb66c3c981145524d7de6f +Subproject commit 94a092dce23818afb0a1a77df12d5d487750522a