diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/pg_profile_lookup.ini
index aedda37a887..673df369a9b 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/pg_profile_lookup.ini
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 90272 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 53248 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 96096 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 90272 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 53248 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 96096 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/qos.json.j2 b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/qos.json.j2
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/pg_profile_lookup.ini b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/pg_profile_lookup.ini
index dc05d0a100a..0b5d680edda 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/pg_profile_lookup.ini
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 79872 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 56160 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 85696 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 79872 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 56160 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 85696 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/qos.json.j2 b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/qos.json.j2
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/pg_profile_lookup.ini b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/pg_profile_lookup.ini
index aedda37a887..673df369a9b 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/pg_profile_lookup.ini
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 90272 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 53248 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 96096 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 90272 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 53248 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 96096 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/qos.json.j2 b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/qos.json.j2
+++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/pg_profile_lookup.ini b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/pg_profile_lookup.ini
index aedda37a887..673df369a9b 100644
--- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/pg_profile_lookup.ini
+++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 90272 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 53248 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 96096 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 90272 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 53248 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 96096 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/qos.json.j2 b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/qos.json.j2
+++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/pg_profile_lookup.ini b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/pg_profile_lookup.ini
index aedda37a887..673df369a9b 100644
--- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/pg_profile_lookup.ini
+++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 90272 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 53248 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 96096 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 90272 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 53248 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 96096 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/qos.json.j2 b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/qos.json.j2
+++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/pg_profile_lookup.ini b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/pg_profile_lookup.ini
index dc05d0a100a..0b5d680edda 100644
--- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/pg_profile_lookup.ini
+++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/pg_profile_lookup.ini
@@ -1,17 +1,17 @@
# PG lossless profiles.
# speed cable size xon xoff threshold xon_offset
- 10000 5m 1248 2288 35776 -3 2288
- 25000 5m 1248 2288 53248 -3 2288
- 40000 5m 1248 2288 66560 -3 2288
- 50000 5m 1248 2288 79872 -3 2288
- 100000 5m 1248 2288 165568 -3 2288
- 10000 40m 1248 2288 37024 -3 2288
- 25000 40m 1248 2288 56160 -3 2288
- 40000 40m 1248 2288 71552 -3 2288
- 50000 40m 1248 2288 85696 -3 2288
- 100000 40m 1248 2288 177632 -3 2288
- 10000 300m 1248 2288 46176 -3 2288
- 25000 300m 1248 2288 79040 -3 2288
- 40000 300m 1248 2288 108160 -3 2288
- 50000 300m 1248 2288 141856 -3 2288
- 100000 300m 1248 2288 268736 -3 2288
+ 10000 5m 1248 2288 35776 0 2288
+ 25000 5m 1248 2288 53248 0 2288
+ 40000 5m 1248 2288 66560 0 2288
+ 50000 5m 1248 2288 79872 0 2288
+ 100000 5m 1248 2288 165568 0 2288
+ 10000 40m 1248 2288 37024 0 2288
+ 25000 40m 1248 2288 56160 0 2288
+ 40000 40m 1248 2288 71552 0 2288
+ 50000 40m 1248 2288 85696 0 2288
+ 100000 40m 1248 2288 177632 0 2288
+ 10000 300m 1248 2288 46176 0 2288
+ 25000 300m 1248 2288 79040 0 2288
+ 40000 300m 1248 2288 108160 0 2288
+ 50000 300m 1248 2288 141856 0 2288
+ 100000 300m 1248 2288 268736 0 2288
diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/qos.json.j2 b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/qos.json.j2
index 3e548325ea3..34002048afd 100644
--- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/qos.json.j2
+++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/qos.json.j2
@@ -1 +1,21 @@
+{%- macro generate_wred_profiles() %}
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "250000",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+{%- endmacro %}
+
{%- include 'qos_config.j2' %}
diff --git a/dockers/docker-fpm-quagga/bgpcfgd b/dockers/docker-fpm-quagga/bgpcfgd
index 10687df4396..b78f0d021e8 100755
--- a/dockers/docker-fpm-quagga/bgpcfgd
+++ b/dockers/docker-fpm-quagga/bgpcfgd
@@ -159,12 +159,12 @@ class BGPConfigManager(object):
else:
syslog.syslog(syslog.LOG_ERR, "Got ambigous ip addres '%s'" % ip_addr)
except:
- syslog.syslog(syslog.LOG_ERR, "Error while rendering set src template" % ip_addr)
+ syslog.syslog(syslog.LOG_ERR, "Error while rendering set src template '%s'" % ip_addr)
else:
cmds.append(txt)
syslog.syslog(syslog.LOG_INFO, "Generate set src configuration with Loopback0 ipv4 '%s'" % ip_addr)
elif op == swsscommon.DEL_COMMAND:
- syslog.syslog(syslog.LOG_INFO, "Delete command is not supported for set src templates" % ip_addr)
+ syslog.syslog(syslog.LOG_INFO, "Delete command is not supported for set src templates")
for cmd in cmds:
self.__apply_cmd(cmd, zebra=True)
diff --git a/files/build_templates/qos_config.j2 b/files/build_templates/qos_config.j2
index b638e45df6d..b6ac174f6bd 100644
--- a/files/build_templates/qos_config.j2
+++ b/files/build_templates/qos_config.j2
@@ -177,6 +177,9 @@
{% endfor %}
},
+{% if generate_wred_profiles is defined %}
+ {{- generate_wred_profiles() }}
+{% else %}
"WRED_PROFILE": {
"AZURE_LOSSLESS" : {
"wred_green_enable" : "true",
@@ -194,6 +197,7 @@
"red_drop_probability" : "5"
}
},
+{% endif %}
"QUEUE": {
{% for port in PORT_ACTIVE %}
"{{ port }}|3": {
diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2
index d75e9ef754c..d9d52c4ecdc 100644
--- a/files/build_templates/sonic_debian_extension.j2
+++ b/files/build_templates/sonic_debian_extension.j2
@@ -198,9 +198,9 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl disable core_uploader.service
sudo cp $IMAGE_CONFIGS/corefile_uploader/core_uploader.py $FILESYSTEM_ROOT/usr/bin/
sudo cp $IMAGE_CONFIGS/corefile_uploader/core_analyzer.rc.json $FILESYSTEM_ROOT_ETC_SONIC/
sudo chmod og-rw $FILESYSTEM_ROOT_ETC_SONIC/core_analyzer.rc.json
-sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install azure-storage
-sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install watchdog
-sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install futures
+sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install azure-storage==0.36.0
+sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install watchdog==0.10.2
+sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install futures==3.3.0
# Copy the buffer configuration template
sudo cp $BUILD_TEMPLATES/buffers_config.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/
diff --git a/files/image_config/ntp/ntp-config.sh b/files/image_config/ntp/ntp-config.sh
index 601b7bd421f..d8b8369c91c 100755
--- a/files/image_config/ntp/ntp-config.sh
+++ b/files/image_config/ntp/ntp-config.sh
@@ -1,5 +1,37 @@
#!/bin/bash
+ntp_default_file='/etc/default/ntp'
+ntp_temp_file='/tmp/ntp.orig'
+
+reboot_type='cold'
+
+function get_database_reboot_type()
+{
+ SYSTEM_WARM_START=`/usr/bin/redis-cli -n 6 hget "WARM_RESTART_ENABLE_TABLE|system" enable`
+ SYSTEM_FAST_START=`/usr/bin/redis-cli -n 6 get "FAST_REBOOT|system"`
+
+ if [[ x"${SYSTEM_WARM_START}" == x"true" ]]; then
+ reboot_type='warm'
+ elif [[ x"${SYSTEM_FAST_START}" == x"1" ]]; then
+ reboot_type='fast'
+ fi
+}
+
+function modify_ntp_default
+{
+ cp ${ntp_default_file} ${ntp_temp_file}
+ sed -e "$1" ${ntp_temp_file} >${ntp_default_file}
+}
+
sonic-cfggen -d -t /usr/share/sonic/templates/ntp.conf.j2 >/etc/ntp.conf
+get_database_reboot_type
+if [[ x"${reboot_type}" == x"cold" ]]; then
+ echo "Enabling NTP long jump for reboot type ${reboot_type} ..."
+ modify_ntp_default "s/NTPD_OPTS='-x'/NTPD_OPTS='-g'/"
+else
+ echo "Disabling NTP long jump for reboot type ${reboot_type} ..."
+ modify_ntp_default "s/NTPD_OPTS='-g'/NTPD_OPTS='-x'/"
+fi
+
systemctl restart ntp
diff --git a/files/image_config/process-reboot-cause/process-reboot-cause b/files/image_config/process-reboot-cause/process-reboot-cause
index 409deb7d685..c9d57fd77b0 100755
--- a/files/image_config/process-reboot-cause/process-reboot-cause
+++ b/files/image_config/process-reboot-cause/process-reboot-cause
@@ -12,6 +12,8 @@ try:
import sys
import syslog
import re
+
+ import sonic_device_util
except ImportError as err:
raise ImportError("%s - required module not found" % str(err))
@@ -34,7 +36,7 @@ REBOOT_TYPE_KEXEC_FILE = "/proc/cmdline"
REBOOT_TYPE_KEXEC_PATTERN_WARM = ".*SONIC_BOOT_TYPE=(warm|fastfast).*"
REBOOT_TYPE_KEXEC_PATTERN_FAST = ".*SONIC_BOOT_TYPE=(fast|fast-reboot).*"
-UNKNOWN_REBOOT_CAUSE = "Unknown"
+REBOOT_CAUSE_UNKNOWN = "Unknown"
# ========================== Syslog wrappers ==========================
@@ -72,7 +74,7 @@ def parse_warmfast_reboot_from_proc_cmdline():
def find_software_reboot_cause():
- software_reboot_cause = UNKNOWN_REBOOT_CAUSE
+ software_reboot_cause = REBOOT_CAUSE_UNKNOWN
if os.path.isfile(REBOOT_CAUSE_FILE):
with open(REBOOT_CAUSE_FILE, "r") as cause_file:
@@ -82,6 +84,10 @@ def find_software_reboot_cause():
log_info("Reboot cause file {} not found".format(REBOOT_CAUSE_FILE))
if os.path.isfile(FIRST_BOOT_PLATFORM_FILE):
+ if software_reboot_cause == REBOOT_CAUSE_UNKNOWN:
+ version_info = sonic_device_util.get_sonic_version_info()
+ build_version = version_info['build_version'] if version_info else "unknown"
+ software_reboot_cause += " (First boot of SONiC version {})".format(build_version)
os.remove(FIRST_BOOT_PLATFORM_FILE)
return software_reboot_cause
@@ -148,7 +154,7 @@ def main():
os.remove(PREVIOUS_REBOOT_CAUSE_FILE)
# Set a default previous reboot cause
- previous_reboot_cause = UNKNOWN_REBOOT_CAUSE
+ previous_reboot_cause = REBOOT_CAUSE_UNKNOWN
# 1. Check if the previous reboot was warm/fast reboot by testing whether there is "fast|fastfast|warm" in /proc/cmdline
proc_cmdline_reboot_cause = find_proc_cmdline_reboot_cause()
@@ -188,7 +194,7 @@ def main():
# Write a new default reboot cause file for the next reboot
with open(REBOOT_CAUSE_FILE, "w") as cause_file:
- cause_file.write(UNKNOWN_REBOOT_CAUSE)
+ cause_file.write(REBOOT_CAUSE_UNKNOWN)
if __name__ == "__main__":
diff --git a/platform/barefoot/one-image.mk b/platform/barefoot/one-image.mk
index fc4e197cd5c..6961193d934 100644
--- a/platform/barefoot/one-image.mk
+++ b/platform/barefoot/one-image.mk
@@ -9,5 +9,10 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(BFN_MONTARA_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(WNC_OSW1800_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(INGRASYS_S9180_32X_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(INGRASYS_S9280_64X_PLATFORM_MODULE)
-$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
+$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/cavium/one-image.mk b/platform/cavium/one-image.mk
index 69657845199..658c2d60b58 100644
--- a/platform/cavium/one-image.mk
+++ b/platform/cavium/one-image.mk
@@ -5,5 +5,10 @@ $(SONIC_ONE_IMAGE)_MACHINE = cavium
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
$(SONIC_ONE_IMAGE)_INSTALLS += $(CAVM_PLATFORM_DEB)
$(SONIC_ONE_IMAGE)_INSTALLS += $(CAVM_XPNET_DEB)
-$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
+$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/centec/one-image.mk b/platform/centec/one-image.mk
index ec8448433aa..c5cc1f26f5f 100644
--- a/platform/centec/one-image.mk
+++ b/platform/centec/one-image.mk
@@ -5,5 +5,10 @@ $(SONIC_ONE_IMAGE)_MACHINE = centec
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
$(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(CENTEC_E582_48X6Q_PLATFORM_MODULE) \
$(CENTEC_E582_48X2Q4Z_PLATFORM_MODULE)
-$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
+$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/marvell/one-image.mk b/platform/marvell/one-image.mk
index ad8cd522f99..270a5307d0e 100644
--- a/platform/marvell/one-image.mk
+++ b/platform/marvell/one-image.mk
@@ -3,5 +3,10 @@
SONIC_ONE_IMAGE = sonic-marvell.bin
$(SONIC_ONE_IMAGE)_MACHINE = marvell
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
-$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
+$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/mellanox/one-image.mk b/platform/mellanox/one-image.mk
index 89f203defe9..d9db68b74e9 100644
--- a/platform/mellanox/one-image.mk
+++ b/platform/mellanox/one-image.mk
@@ -4,6 +4,11 @@ SONIC_ONE_IMAGE = sonic-mellanox.bin
$(SONIC_ONE_IMAGE)_MACHINE = mellanox
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
$(SONIC_ONE_IMAGE)_INSTALLS += $(SX_KERNEL) $(KERNEL_MFT) $(MFT_OEM) $(MFT) $(MLNX_HW_MANAGEMENT)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
$(SONIC_ONE_IMAGE)_FILES += $(MLNX_FILES)
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/platform/nephos/one-image.mk b/platform/nephos/one-image.mk
index 60320f795b3..d58ed445e15 100644
--- a/platform/nephos/one-image.mk
+++ b/platform/nephos/one-image.mk
@@ -11,5 +11,10 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(INGRASYS_S9130_32X_PLATFORM_MODULE) \
$(CIG_CS6436_54P_PLATFORM_MODULE) \
$(CIG_CS5435_54P_PLATFORM_MODULE)
-$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
+ifeq ($(INSTALL_DEBUG_TOOLS),y)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES)
+$(SONIC_ONE_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.gz, $(SONIC_INSTALL_DOCKER_DBG_IMAGES)), $(SONIC_INSTALL_DOCKER_IMAGES))
+else
+$(SONIC_ONE_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES)
+endif
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 5be705d1ead..3df089b5568 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -415,6 +415,39 @@ def parse_meta(meta, hname):
deployment_id = value
return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id
+
+def parse_linkmeta(meta, hname):
+ link = meta.find(str(QName(ns, "Link")))
+ linkmetas = {}
+ for linkmeta in link.findall(str(QName(ns1, "LinkMetadata"))):
+ port = None
+ fec_disabled = None
+
+ # Sample: ARISTA05T1:Ethernet1/33;switch-t0:fortyGigE0/4
+ key = linkmeta.find(str(QName(ns1, "Key"))).text
+ endpoints = key.split(';')
+ for endpoint in endpoints:
+ t = endpoint.split(':')
+ if len(t) == 2 and t[0].lower() == hname.lower():
+ port = t[1]
+ break
+ else:
+ # Cannot find a matching hname, something went wrong
+ continue
+
+ properties = linkmeta.find(str(QName(ns1, "Properties")))
+ for device_property in properties.findall(str(QName(ns1, "DeviceProperty"))):
+ name = device_property.find(str(QName(ns1, "Name"))).text
+ value = device_property.find(str(QName(ns1, "Value"))).text
+ if name == "FECDisabled":
+ fec_disabled = value
+
+ linkmetas[port] = {}
+ if fec_disabled:
+ linkmetas[port]["FECDisabled"] = fec_disabled
+ return linkmetas
+
+
def parse_deviceinfo(meta, hwsku):
port_speeds = {}
port_descriptions = {}
@@ -468,7 +501,6 @@ def filter_acl_mirror_table_bindings(acls, neighbors, port_channels):
def parse_xml(filename, platform=None, port_config_file=None):
root = ET.parse(filename).getroot()
- mini_graph_path = filename
u_neighbors = None
u_devices = None
@@ -500,6 +532,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
erspan_dst = []
bgp_peers_with_range = None
deployment_id = None
+ linkmetas = {}
hwsku_qn = QName(ns, "HwSku")
hostname_qn = QName(ns, "Hostname")
@@ -525,6 +558,8 @@ def parse_xml(filename, platform=None, port_config_file=None):
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
(syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
+ elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
+ linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
(port_speeds_default, port_descriptions) = parse_deviceinfo(child, hwsku)
@@ -596,7 +631,14 @@ def parse_xml(filename, platform=None, port_config_file=None):
ports.setdefault(port_name, {})['speed'] = port_speed_png[port_name]
for port_name, port in ports.items():
- if port.get('speed') == '100000':
+ # get port alias from port_config.ini
+ if port_config_file:
+ alias = port.get('alias')
+ else:
+ alias = port_name
+ # generate default 100G FEC
+ # Note: FECDisabled only be effective on 100G port right now
+ if port.get('speed') == '100000' and linkmetas.get(alias, {}).get('FECDisabled', '').lower() != 'true':
port['fec'] = 'rs'
# set port description if parsed from deviceinfo
diff --git a/src/sonic-config-engine/tests/sample-arista-7050-t0-minigraph.xml b/src/sonic-config-engine/tests/sample-arista-7050-t0-minigraph.xml
new file mode 100644
index 00000000000..4fd1ba9ba12
--- /dev/null
+++ b/src/sonic-config-engine/tests/sample-arista-7050-t0-minigraph.xml
@@ -0,0 +1,907 @@
+
+
+
+
+
+ s7050-dev-1
+ 10.0.0.56
+ ARISTA01T1
+ 10.0.0.57
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ FC00::71
+ ARISTA01T1
+ FC00::72
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ 10.0.0.58
+ ARISTA02T1
+ 10.0.0.59
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ FC00::75
+ ARISTA02T1
+ FC00::76
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ 10.0.0.60
+ ARISTA03T1
+ 10.0.0.61
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ FC00::79
+ ARISTA03T1
+ FC00::7A
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ 10.0.0.62
+ ARISTA04T1
+ 10.0.0.63
+ 1
+ 10
+ 3
+
+
+ s7050-dev-1
+ FC00::7D
+ ARISTA04T1
+ FC00::7E
+ 1
+ 10
+ 3
+
+
+
+
+ 65100
+ s7050-dev-1
+
+
+ 10.0.0.57
+
+
+
+
+
+ 10.0.0.59
+
+
+
+
+
+ 10.0.0.61
+
+
+
+
+
+ 10.0.0.63
+
+
+
+
+
+
+
+
+ 64600
+ ARISTA01T1
+
+
+
+ 64600
+ ARISTA02T1
+
+
+
+ 64600
+ ARISTA03T1
+
+
+
+ 64600
+ ARISTA04T1
+
+
+
+
+
+
+
+
+
+ HostIP
+ Loopback0
+
+ 10.1.0.32/32
+
+ 10.1.0.32/32
+
+
+ HostIP1
+ Loopback0
+
+ FC00:1::32/128
+
+ FC00:1::32/128
+
+
+
+
+ HostIP
+ eth0
+
+ 10.0.0.243/23
+
+ 10.0.0.243/23
+
+
+
+
+
+ s7050-dev-1
+
+
+ PortChannel0001
+ Ethernet33
+
+
+
+ PortChannel0002
+ Ethernet34
+
+
+
+ PortChannel0003
+ Ethernet35
+
+
+
+ PortChannel0004
+ Ethernet36
+
+
+
+
+
+ Vlan1000
+ Ethernet6/1;Ethernet7/1;Ethernet8/1;Ethernet9/1;Ethernet10/1;Ethernet11/1;Ethernet12/1;Ethernet13/1;Ethernet14/1;Ethernet15/1;Ethernet16/1;Ethernet17/1;Ethernet18/1;Ethernet19/1;Ethernet20/1;Ethernet21/1;Ethernet22/1;Ethernet23/1;Ethernet24/1;Ethernet25/1;Ethernet26/1;Ethernet27/1;Ethernet28/1;Ethernet29
+ False
+ 0.0.0.0/0
+
+ 1000
+ 1000
+ 192.168.0.0/21
+
+
+
+
+
+ PortChannel0001
+ 10.0.0.56/31
+
+
+
+ PortChannel0001
+ FC00::71/126
+
+
+
+ PortChannel0002
+ 10.0.0.58/31
+
+
+
+ PortChannel0002
+ FC00::75/126
+
+
+
+ PortChannel0003
+ 10.0.0.60/31
+
+
+
+ PortChannel0003
+ FC00::79/126
+
+
+
+ PortChannel0004
+ 10.0.0.62/31
+
+
+
+ PortChannel0004
+ FC00::7D/126
+
+
+
+ Vlan1000
+ 192.168.0.1/21
+
+
+
+
+
+
+
+
+
+
+
+ DeviceInterfaceLink
+ ARISTA01T1
+ Ethernet1
+ s7050-dev-1
+ Ethernet33
+
+
+ DeviceInterfaceLink
+ ARISTA02T1
+ Ethernet1
+ s7050-dev-1
+ Ethernet34
+
+
+ DeviceInterfaceLink
+ ARISTA03T1
+ Ethernet1
+ s7050-dev-1
+ Ethernet35
+
+
+ DeviceInterfaceLink
+ ARISTA04T1
+ Ethernet1
+ s7050-dev-1
+ Ethernet36
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet6/1
+ Servers0
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet7/1
+ Servers1
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet8/1
+ Servers2
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet9/1
+ Servers3
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet10/1
+ Servers4
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet11/1
+ Servers5
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet12/1
+ Servers6
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet13/1
+ Servers7
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet14/1
+ Servers8
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet15/1
+ Servers9
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet16/1
+ Servers10
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet17/1
+ Servers11
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet18/1
+ Servers12
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet19/1
+ Servers13
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet20/1
+ Servers14
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet21/1
+ Servers15
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet22/1
+ Servers16
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet23/1
+ Servers17
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet24/1
+ Servers18
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet25/1
+ Servers19
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet26/1
+ Servers20
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet27/1
+ Servers21
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet28/1
+ Servers22
+ eth0
+
+
+ DeviceInterfaceLink
+ s7050-dev-1
+ Ethernet29
+ Servers23
+ eth0
+
+
+
+
+ s7050-dev-1
+ Arista-7050-QX-32S
+
+ 10.0.0.243
+
+
+
+
+
+
+ true
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet5/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet6/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet7/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet8/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet9/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet10/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet11/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet12/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet13/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet14/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet15/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet16/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet17/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet18/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet19/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet20/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet21/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet22/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet23/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet24/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet25/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet26/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet27/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet28/1
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet29
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet30
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet31
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet32
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet33
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet34
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet35
+
+ false
+ 0
+ 0
+ 40000
+
+
+ DeviceInterface
+
+ true
+ true
+ 1
+ Ethernet36
+
+ false
+ 0
+ 0
+ 40000
+
+
+ true
+ 0
+ Arista-7050-QX-32S
+
+
+
+
+
+
+ s7050-dev-1
+
+
+ ErspanDestinationIpv4
+
+ 10.0.0.16
+
+
+
+
+
+
+ s7050-dev-1
+ Arista-7050-QX-32S
+
diff --git a/src/sonic-config-engine/tests/sample_output/qos-arista7050.json b/src/sonic-config-engine/tests/sample_output/qos-arista7050.json
new file mode 100644
index 00000000000..aa05ef4ec36
--- /dev/null
+++ b/src/sonic-config-engine/tests/sample_output/qos-arista7050.json
@@ -0,0 +1,977 @@
+{
+ "TC_TO_PRIORITY_GROUP_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "0",
+ "2": "0",
+ "3": "3",
+ "4": "4",
+ "5": "0",
+ "6": "0",
+ "7": "7"
+ }
+ },
+ "MAP_PFC_PRIORITY_TO_QUEUE": {
+ "AZURE": {
+ "0": "0",
+ "1": "1",
+ "2": "2",
+ "3": "3",
+ "4": "4",
+ "5": "5",
+ "6": "6",
+ "7": "7"
+ }
+ },
+ "TC_TO_QUEUE_MAP": {
+ "AZURE": {
+ "0": "0",
+ "1": "1",
+ "2": "2",
+ "3": "3",
+ "4": "4",
+ "5": "5",
+ "6": "6",
+ "7": "7"
+ }
+ },
+ "DSCP_TO_TC_MAP": {
+ "AZURE": {
+ "0" : "1",
+ "1" : "1",
+ "2" : "1",
+ "3" : "3",
+ "4" : "4",
+ "5" : "2",
+ "6" : "1",
+ "7" : "1",
+ "8" : "0",
+ "9" : "1",
+ "10": "1",
+ "11": "1",
+ "12": "1",
+ "13": "1",
+ "14": "1",
+ "15": "1",
+ "16": "1",
+ "17": "1",
+ "18": "1",
+ "19": "1",
+ "20": "1",
+ "21": "1",
+ "22": "1",
+ "23": "1",
+ "24": "1",
+ "25": "1",
+ "26": "1",
+ "27": "1",
+ "28": "1",
+ "29": "1",
+ "30": "1",
+ "31": "1",
+ "32": "1",
+ "33": "1",
+ "34": "1",
+ "35": "1",
+ "36": "1",
+ "37": "1",
+ "38": "1",
+ "39": "1",
+ "40": "1",
+ "41": "1",
+ "42": "1",
+ "43": "1",
+ "44": "1",
+ "45": "1",
+ "46": "5",
+ "47": "1",
+ "48": "6",
+ "49": "1",
+ "50": "1",
+ "51": "1",
+ "52": "1",
+ "53": "1",
+ "54": "1",
+ "55": "1",
+ "56": "1",
+ "57": "1",
+ "58": "1",
+ "59": "1",
+ "60": "1",
+ "61": "1",
+ "62": "1",
+ "63": "1"
+ }
+ },
+ "SCHEDULER": {
+ "scheduler.0": {
+ "type" : "DWRR",
+ "weight": "14"
+ },
+ "scheduler.1": {
+ "type" : "DWRR",
+ "weight": "15"
+ }
+ },
+ "PORT_QOS_MAP": {
+ "Ethernet4": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet8": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet12": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet16": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet20": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet24": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet28": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet32": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet36": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet40": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet44": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet48": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet52": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet56": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet60": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet64": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet68": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet72": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet76": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet80": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet84": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet88": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet92": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet96": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet112": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet116": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet120": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ },
+ "Ethernet124": {
+ "dscp_to_tc_map" : "[DSCP_TO_TC_MAP|AZURE]",
+ "tc_to_queue_map" : "[TC_TO_QUEUE_MAP|AZURE]",
+ "tc_to_pg_map" : "[TC_TO_PRIORITY_GROUP_MAP|AZURE]",
+ "pfc_to_queue_map": "[MAP_PFC_PRIORITY_TO_QUEUE|AZURE]",
+ "pfc_enable" : "3,4"
+ }
+ },
+ "WRED_PROFILE": {
+ "AZURE_LOSSLESS" : {
+ "wred_green_enable" : "true",
+ "wred_yellow_enable" : "true",
+ "wred_red_enable" : "true",
+ "ecn" : "ecn_all",
+ "green_max_threshold" : "2097152",
+ "green_min_threshold" : "1048576",
+ "yellow_max_threshold" : "2097152",
+ "yellow_min_threshold" : "1048576",
+ "red_max_threshold" : "2097152",
+ "red_min_threshold" : "1048576",
+ "green_drop_probability" : "5",
+ "yellow_drop_probability": "5",
+ "red_drop_probability" : "5"
+ }
+ },
+ "QUEUE": {
+ "Ethernet4|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet8|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet12|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet16|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet20|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet24|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet28|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet32|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet36|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet40|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet44|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet48|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet52|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet56|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet60|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet64|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet68|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet72|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet76|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet80|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet84|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet88|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet92|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet96|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet112|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet116|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet120|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet124|3": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet4|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet8|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet12|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet16|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet20|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet24|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet28|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet32|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet36|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet40|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet44|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet48|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet52|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet56|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet60|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet64|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet68|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet72|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet76|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet80|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet84|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet88|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet92|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet96|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet112|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet116|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet120|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet124|4": {
+ "scheduler" : "[SCHEDULER|scheduler.1]",
+ "wred_profile": "[WRED_PROFILE|AZURE_LOSSLESS]"
+ },
+ "Ethernet4|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet8|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet12|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet16|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet20|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet24|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet28|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet32|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet36|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet40|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet44|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet48|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet52|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet56|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet60|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet64|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet68|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet72|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet76|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet80|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet84|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet88|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet92|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet96|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet112|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet116|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet120|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet124|0": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet4|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet8|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet12|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet16|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet20|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet24|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet28|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet32|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet36|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet40|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet44|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet48|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet52|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet56|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet60|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet64|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet68|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet72|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet76|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet80|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet84|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet88|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet92|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet96|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet112|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet116|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet120|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet124|1": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet4|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet8|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet12|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet16|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet20|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet24|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet28|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet32|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet36|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet40|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet44|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet48|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet52|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet56|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet60|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet64|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet68|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet72|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet76|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet80|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet84|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet88|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet92|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet96|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet112|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet116|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet120|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet124|2": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet4|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet8|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet12|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet16|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet20|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet24|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet28|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet32|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet36|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet40|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet44|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet48|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet52|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet56|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet60|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet64|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet68|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet72|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet76|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet80|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet84|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet88|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet92|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet96|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet112|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet116|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet120|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet124|5": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet4|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet8|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet12|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet16|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet20|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet24|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet28|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet32|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet36|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet40|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet44|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet48|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet52|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet56|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet60|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet64|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet68|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet72|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet76|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet80|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet84|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet88|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet92|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet96|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet112|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet116|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet120|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ },
+ "Ethernet124|6": {
+ "scheduler": "[SCHEDULER|scheduler.0]"
+ }
+ }
+}
diff --git a/src/sonic-config-engine/tests/sample_output/qos-dell6100.json b/src/sonic-config-engine/tests/sample_output/qos-dell6100.json
index 680ca6232e1..75d9b3a87ee 100644
--- a/src/sonic-config-engine/tests/sample_output/qos-dell6100.json
+++ b/src/sonic-config-engine/tests/sample_output/qos-dell6100.json
@@ -430,7 +430,7 @@
"wred_red_enable" : "true",
"ecn" : "ecn_all",
"green_max_threshold" : "2097152",
- "green_min_threshold" : "1048576",
+ "green_min_threshold" : "250000",
"yellow_max_threshold" : "2097152",
"yellow_min_threshold" : "1048576",
"red_max_threshold" : "2097152",
diff --git a/src/sonic-config-engine/tests/t0-sample-graph.xml b/src/sonic-config-engine/tests/t0-sample-graph.xml
index 47985f870e5..4ede44c852f 100644
--- a/src/sonic-config-engine/tests/t0-sample-graph.xml
+++ b/src/sonic-config-engine/tests/t0-sample-graph.xml
@@ -376,13 +376,14 @@
Ethernet1/1
switch-t0
fortyGigE0/124
+ 100000
DeviceInterfaceLink
true
- 10000
+ 100000
switch-t0
- fortyGigE0/2
+ fortyGigE0/4
true
ARISTA05T1
Ethernet1/33
@@ -434,6 +435,32 @@
+
+
+
+
+
+
+ FECDisabled
+
+ True
+
+
+ ARISTA05T1:Ethernet1/33;switch-t0:fortyGigE0/4
+
+
+
+
+
+ FECDisabled
+
+ True
+
+
+ ARISTA06T1:Ethernet1/34;switch-t0:fortyGigE0/8
+
+
+
switch-t0
Force10-S6000
diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py
index 15691d98ff7..d26277e3e46 100644
--- a/src/sonic-config-engine/tests/test_cfggen.py
+++ b/src/sonic-config-engine/tests/test_cfggen.py
@@ -82,8 +82,6 @@ def test_minigraph_acl(self):
argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v ACL_TABLE'
output = self.run_script(argument, True)
self.assertEqual(output.strip(), "Warning: Ignoring Control Plane ACL NTP_ACL without type\n"
- "Warning: ignore interface 'fortyGigE0/2' as it is not in the port_config.ini\n"
- "Warning: ignore interface 'fortyGigE0/2' in DEVICE_NEIGHBOR as it is not in the port_config.ini\n"
"{'NTP_ACL': {'services': ['NTP'], 'type': 'CTRLPLANE', 'policy_desc': 'NTP_ACL', 'stage': 'ingress'}, "
"'EVERFLOW': {'stage': 'ingress', 'type': 'MIRROR', 'ports': ['PortChannel01', 'PortChannel02', 'PortChannel03', 'PortChannel04', 'Ethernet4'], 'policy_desc': 'EVERFLOW'}, "
"'ROUTER_PROTECT': {'services': ['SSH', 'SNMP'], 'type': 'CTRLPLANE', 'policy_desc': 'ROUTER_PROTECT', 'stage': 'ingress'}, "
@@ -165,7 +163,18 @@ 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\']"'
output = self.run_script(argument)
- self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'description': 'ARISTA04T1:Ethernet1/1', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up'}")
+ self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'fec': 'rs', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up', 'speed': '100000', 'description': 'ARISTA04T1:Ethernet1/1'}")
+
+ def test_minigraph_port_fec_disabled(self):
+ # Test for FECDisabled
+ argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet4\']"'
+ output = self.run_script(argument)
+ self.assertEqual(output.strip(), "{'lanes': '25,26,27,28', 'description': 'Servers0:eth0', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/4', 'admin_status': 'up', 'speed': '100000'}")
+
+ def test_minigraph_port_rs(self):
+ argument = '-m "' + self.sample_graph_t0 + '" -p "' + self.port_config + '" -v "PORT[\'Ethernet124\']"'
+ output = self.run_script(argument)
+ self.assertEqual(output.strip(), "{'lanes': '101,102,103,104', 'fec': 'rs', 'pfc_asym': 'off', 'mtu': '9100', 'alias': 'fortyGigE0/124', 'admin_status': 'up', 'speed': '100000', 'description': 'ARISTA04T1:Ethernet1/1'}")
def test_minigraph_bgp(self):
argument = '-m "' + self.sample_graph_bgp_speaker + '" -p "' + self.port_config + '" -v "BGP_NEIGHBOR[\'10.0.0.59\']"'
diff --git a/src/sonic-config-engine/tests/test_j2files.py b/src/sonic-config-engine/tests/test_j2files.py
index 8718e1e422e..98a3d374c00 100644
--- a/src/sonic-config-engine/tests/test_j2files.py
+++ b/src/sonic-config-engine/tests/test_j2files.py
@@ -17,6 +17,7 @@ def setUp(self):
self.t1_mlnx_minigraph = os.path.join(self.test_dir, 't1-sample-graph-mlnx.xml')
self.mlnx_port_config = os.path.join(self.test_dir, 'sample-port-config-mlnx.ini')
self.dell6100_t0_minigraph = os.path.join(self.test_dir, 'sample-dell-6100-t0-minigraph.xml')
+ self.arista7050_t0_minigraph = os.path.join(self.test_dir, 'sample-arista-7050-t0-minigraph.xml')
self.output_file = os.path.join(self.test_dir, 'output')
def run_script(self, argument):
@@ -94,6 +95,25 @@ def test_l2switch_template(self):
self.assertTrue(filecmp.cmp(sample_output_file, self.output_file))
+ def test_qos_arista7050_render_template(self):
+ arista_dir_path = os.path.join(self.test_dir, '..', '..', '..', 'device', 'arista', 'x86_64-arista_7050_qx32s', 'Arista-7050-QX-32S')
+ qos_file = os.path.join(arista_dir_path, 'qos.json.j2')
+ port_config_ini_file = os.path.join(arista_dir_path, 'port_config.ini')
+
+ # copy qos_config.j2 to the Arista 7050 directory to have all templates in one directory
+ qos_config_file = os.path.join(self.test_dir, '..', '..', '..', 'files', 'build_templates', 'qos_config.j2')
+ shutil.copy2(qos_config_file, arista_dir_path)
+
+ argument = '-m ' + self.arista7050_t0_minigraph + ' -p ' + port_config_ini_file + ' -t ' + qos_file + ' > ' + self.output_file
+ self.run_script(argument)
+
+ # cleanup
+ qos_config_file_new = os.path.join(arista_dir_path, 'qos_config.j2')
+ os.remove(qos_config_file_new)
+
+ sample_output_file = os.path.join(self.test_dir, 'sample_output', 'qos-arista7050.json')
+ assert filecmp.cmp(sample_output_file, self.output_file)
+
def test_qos_dell6100_render_template(self):
dell_dir_path = os.path.join(self.test_dir, '..', '..', '..', 'device', 'dell', 'x86_64-dell_s6100_c2538-r0', 'Force10-S6100')
qos_file = os.path.join(dell_dir_path, 'qos.json.j2')
diff --git a/src/sonic-sairedis b/src/sonic-sairedis
index 5065d7858eb..370e3c17100 160000
--- a/src/sonic-sairedis
+++ b/src/sonic-sairedis
@@ -1 +1 @@
-Subproject commit 5065d7858eb28154e553a8276f349a965d6bf93b
+Subproject commit 370e3c17100f79b474fa1a18061c1889c61f5f5b