From 763f846e232e95901a7d9061cfbc2f3d04976adc Mon Sep 17 00:00:00 2001 From: Zhijian Li Date: Mon, 28 Aug 2023 23:40:01 +0800 Subject: [PATCH] [YANG SONIC-ACL] Fix Yang definition of ACL_TABLE_TYPE (#16247) How I did it Update Yang definition of ACL_TABLE_TYPE. Update existing testcase. Add new testcase to cover lowercase key scenario. How to verify it Verified by building sonic_yang_models-1.0-py3-none-any.whl. While building the target package, unit tests were run and passed. --- .../tests/files/sample_config_db.json | 6 +- .../tests/yang_model_tests/test_yang_model.py | 1 + .../tests/yang_model_tests/tests/acl.json | 8 ++- .../yang_model_tests/tests_config/acl.json | 63 ++++++++++++++++--- .../yang-templates/sonic-acl.yang.j2 | 6 +- 5 files changed, 69 insertions(+), 15 deletions(-) diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index e434bb0e7019..47c1ab5546f7 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2084,16 +2084,16 @@ }, "ACL_TABLE_TYPE": { "CUSTOM_L3": { - "matches": [ + "MATCHES": [ "IN_PORTS", "OUT_PORTS", "SRC_IP" ], - "actions": [ + "ACTIONS": [ "PACKET_ACTION", "MIRROR_INGRESS_ACTION" ], - "bind_points": [ + "BIND_POINTS": [ "PORT", "LAG" ] diff --git a/src/sonic-yang-models/tests/yang_model_tests/test_yang_model.py b/src/sonic-yang-models/tests/yang_model_tests/test_yang_model.py index 355c9086a6fb..d776f479cd37 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/test_yang_model.py +++ b/src/sonic-yang-models/tests/yang_model_tests/test_yang_model.py @@ -48,6 +48,7 @@ def initTest(self): 'Range': ['does not satisfy', 'range'], 'MinElements': ['Too few'], 'MaxElements': ['Too many'], + 'UnknownElement': ['Unknown element'], 'None': [] } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json b/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json index 0f0d11a529ac..2ad165e421f4 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/acl.json @@ -98,14 +98,18 @@ "eStrKey": "MinElements" }, "ACL_TABLE_CUSTOM_TABLE_TYPE_NO_ACTIONS": { - "desc": "ACL_TABLE LOAD TABLE TYPE SUCCESSFULLY WITH NO ACTIONS.", + "desc": "ACL_TABLE LOAD TABLE TYPE WITH NO ACTIONS.", "eStrKey" : "Verify", "verify": { "xpath": "/sonic-acl:sonic-acl/ACL_TABLE_TYPE/ACL_TABLE_TYPE_LIST[ACL_TABLE_TYPE_NAME='CUSTOM_L3']/ACL_TABLE_TYPE_NAME", - "key": "sonic-acl:actions", + "key": "sonic-acl:ACTIONS", "value": [""] } }, + "ACL_TABLE_CUSTOM_TABLE_TYPE_LOWERCASE_KEY": { + "desc": "ACL_TABLE LOAD TABLE TYPE WITH KEY ACTIONS/BIND_POINTS/MATCHES WRITTEN IN LOWERCASE.", + "eStrKey": "UnknownElement" + }, "ACL_TABLE_L2_ACL_FIELDS": { "desc": "Configure L2 ACL with proper rule fields" }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json index 11633164a166..381b27cf8077 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/acl.json @@ -723,14 +723,14 @@ "ACL_TABLE_TYPE_LIST": [ { "ACL_TABLE_TYPE_NAME": "CUSTOM_L3", - "matches": [ + "MATCHES": [ "SRC_IP", "IN_PORTS" ], - "actions": [ + "ACTIONS": [ "PACKET_ACTION" ], - "bind_points": [ + "BIND_POINTS": [ "PORT" ] } @@ -772,10 +772,10 @@ "ACL_TABLE_TYPE_LIST": [ { "ACL_TABLE_TYPE_NAME": "CUSTOM_L3", - "actions": [ + "ACTIONS": [ "PACKET_ACTION" ], - "bind_points": [ + "BIND_POINTS": [ "PORT" ] } @@ -817,11 +817,11 @@ "ACL_TABLE_TYPE_LIST": [ { "ACL_TABLE_TYPE_NAME": "CUSTOM_L3", - "matches": [ + "MATCHES": [ "SRC_IP", "IN_PORTS" ], - "actions": [ + "ACTIONS": [ "PACKET_ACTION" ] } @@ -845,6 +845,52 @@ } }, "ACL_TABLE_CUSTOM_TABLE_TYPE_NO_ACTIONS": { + "sonic-acl:sonic-acl": { + "sonic-acl:ACL_TABLE": { + "ACL_TABLE_LIST": [ + { + "ACL_TABLE_NAME": "NO-NSW-PACL-V6", + "policy_desc": "Filter IPv6", + "ports": [ + "Ethernet0" + ], + "stage": "EGRESS", + "type": "CUSTOM_L3" + } + ] + }, + "sonic-acl:ACL_TABLE_TYPE": { + "ACL_TABLE_TYPE_LIST": [ + { + "ACL_TABLE_TYPE_NAME": "CUSTOM_L3", + "MATCHES": [ + "SRC_IP", + "IN_PORTS" + ], + "BIND_POINTS": [ + "PORT" + ] + } + ] + } + }, + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "0,1,2,3", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + } + }, + "ACL_TABLE_CUSTOM_TABLE_TYPE_LOWERCASE_KEY": { "sonic-acl:sonic-acl": { "sonic-acl:ACL_TABLE": { "ACL_TABLE_LIST": [ @@ -867,6 +913,9 @@ "SRC_IP", "IN_PORTS" ], + "actions": [ + "PACKET_ACTION" + ], "bind_points": [ "PORT" ] diff --git a/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 b/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 index 633aa73152c9..69d92b50d8aa 100644 --- a/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 +++ b/src/sonic-yang-models/yang-templates/sonic-acl.yang.j2 @@ -281,17 +281,17 @@ module sonic-acl { type string; } - leaf-list matches { + leaf-list MATCHES { type string; min-elements 1; } - leaf-list actions { + leaf-list ACTIONS { type string; default ""; } - leaf-list bind_points { + leaf-list BIND_POINTS { type enumeration { enum PORT; enum LAG;