Skip to content

Commit ece22b7

Browse files
committed
Revert "[GCU] Add PFC_WD RDMA validator (sonic-net#2781)"
This reverts commit 98dadce.
1 parent 7d16b18 commit ece22b7

File tree

7 files changed

+7
-134
lines changed

7 files changed

+7
-134
lines changed

generic_config_updater/change_applier.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from .gu_common import genericUpdaterLogging
1010

1111
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
12-
UPDATER_CONF_FILE = f"{SCRIPT_DIR}/gcu_services_validator.conf.json"
12+
UPDATER_CONF_FILE = f"{SCRIPT_DIR}/generic_config_updater.conf.json"
1313
logger = genericUpdaterLogging.get_logger(title="Change Applier")
1414

1515
print_to_console = False

generic_config_updater/field_operation_validators.py

-26
This file was deleted.

generic_config_updater/gcu_field_operation_validators.conf.json

-20
This file was deleted.

generic_config_updater/gu_common.py

-35
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
import json
22
import jsonpatch
3-
import importlib
43
from jsonpointer import JsonPointer
54
import sonic_yang
65
import sonic_yang_ext
76
import subprocess
87
import yang as ly
98
import copy
109
import re
11-
import os
1210
from sonic_py_common import logger
1311
from enum import Enum
1412

1513
YANG_DIR = "/usr/local/yang-models"
1614
SYSLOG_IDENTIFIER = "GenericConfigUpdater"
17-
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
18-
GCU_FIELD_OP_CONF_FILE = f"{SCRIPT_DIR}/gcu_field_operation_validators.conf.json"
1915

2016
class GenericConfigUpdaterError(Exception):
2117
pass
@@ -161,37 +157,6 @@ def validate_field_operation(self, old_config, target_config):
161157
if any(op['op'] == operation and field == op['path'] for op in patch):
162158
raise IllegalPatchOperationError("Given patch operation is invalid. Operation: {} is illegal on field: {}".format(operation, field))
163159

164-
def _invoke_validating_function(cmd):
165-
# cmd is in the format as <package/module name>.<method name>
166-
method_name = cmd.split(".")[-1]
167-
module_name = ".".join(cmd.split(".")[0:-1])
168-
if module_name != "generic_config_updater.field_operation_validators" or "validator" not in method_name:
169-
raise GenericConfigUpdaterError("Attempting to call invalid method {} in module {}. Module must be generic_config_updater.field_operation_validators, and method must be a defined validator".format(method_name, module_name))
170-
module = importlib.import_module(module_name, package=None)
171-
method_to_call = getattr(module, method_name)
172-
return method_to_call()
173-
174-
if os.path.exists(GCU_FIELD_OP_CONF_FILE):
175-
with open(GCU_FIELD_OP_CONF_FILE, "r") as s:
176-
gcu_field_operation_conf = json.load(s)
177-
else:
178-
raise GenericConfigUpdaterError("GCU field operation validators config file not found")
179-
180-
for element in patch:
181-
path = element["path"]
182-
match = re.search(r'\/([^\/]+)(\/|$)', path) # This matches the table name in the path, eg if path if /PFC_WD/GLOBAL, the match would be PFC_WD
183-
if match is not None:
184-
table = match.group(1)
185-
else:
186-
raise GenericConfigUpdaterError("Invalid jsonpatch path: {}".format(path))
187-
validating_functions= set()
188-
tables = gcu_field_operation_conf["tables"]
189-
validating_functions.update(tables.get(table, {}).get("field_operation_validators", []))
190-
191-
for function in validating_functions:
192-
if not _invoke_validating_function(function):
193-
raise IllegalPatchOperationError("Modification of {} table is illegal- validating function {} returned False".format(table, function))
194-
195160
def validate_lanes(self, config_db):
196161
if "PORT" not in config_db:
197162
return True, None

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
'sonic_cli_gen',
6464
],
6565
package_data={
66-
'generic_config_updater': ['gcu_services_validator.conf.json', 'gcu_field_operation_validators.conf.json'],
66+
'generic_config_updater': ['generic_config_updater.conf.json'],
6767
'show': ['aliases.ini'],
6868
'sonic_installer': ['aliases.ini'],
6969
'tests': ['acl_input/*',

tests/generic_config_updater/gu_common_test.py

+5-51
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
import jsonpatch
44
import sonic_yang
55
import unittest
6-
import mock
6+
from unittest.mock import MagicMock, Mock, patch
77

8-
from unittest.mock import MagicMock, Mock
9-
from mock import patch
108
from .gutest_helpers import create_side_effect_dict, Files
119
import generic_config_updater.gu_common as gu_common
1210

@@ -71,59 +69,15 @@ def setUp(self):
7169
self.config_wrapper_mock = gu_common.ConfigWrapper()
7270
self.config_wrapper_mock.get_config_db_as_json=MagicMock(return_value=Files.CONFIG_DB_AS_JSON)
7371

74-
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"asic_type": "mellanox", "build_version": "SONiC.20181131"}))
75-
def test_validate_field_operation_legal__pfcwd(self):
72+
def test_validate_field_operation_legal(self):
7673
old_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "60"}}}
7774
target_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "40"}}}
7875
config_wrapper = gu_common.ConfigWrapper()
7976
config_wrapper.validate_field_operation(old_config, target_config)
80-
81-
def test_validate_field_operation_illegal__pfcwd(self):
82-
old_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "60"}}}
83-
target_config = {"PFC_WD": {"GLOBAL": {}}}
84-
config_wrapper = gu_common.ConfigWrapper()
85-
self.assertRaises(gu_common.IllegalPatchOperationError, config_wrapper.validate_field_operation, old_config, target_config)
8677

87-
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"asic_type": "invalid-asic", "build_version": "SONiC.20181131"}))
88-
def test_validate_field_modification_illegal__pfcwd(self):
89-
old_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "60"}}}
90-
target_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "80"}}}
91-
config_wrapper = gu_common.ConfigWrapper()
92-
self.assertRaises(gu_common.IllegalPatchOperationError, config_wrapper.validate_field_operation, old_config, target_config)
93-
94-
def test_validate_field_operation_legal__rm_loopback1(self):
95-
old_config = {
96-
"LOOPBACK_INTERFACE": {
97-
"Loopback0": {},
98-
"Loopback0|10.1.0.32/32": {},
99-
"Loopback1": {},
100-
"Loopback1|10.1.0.33/32": {}
101-
}
102-
}
103-
target_config = {
104-
"LOOPBACK_INTERFACE": {
105-
"Loopback0": {},
106-
"Loopback0|10.1.0.32/32": {}
107-
}
108-
}
109-
config_wrapper = gu_common.ConfigWrapper()
110-
config_wrapper.validate_field_operation(old_config, target_config)
111-
112-
def test_validate_field_operation_illegal__rm_loopback0(self):
113-
old_config = {
114-
"LOOPBACK_INTERFACE": {
115-
"Loopback0": {},
116-
"Loopback0|10.1.0.32/32": {},
117-
"Loopback1": {},
118-
"Loopback1|10.1.0.33/32": {}
119-
}
120-
}
121-
target_config = {
122-
"LOOPBACK_INTERFACE": {
123-
"Loopback1": {},
124-
"Loopback1|10.1.0.33/32": {}
125-
}
126-
}
78+
def test_validate_field_operation_illegal(self):
79+
old_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": 60}}}
80+
target_config = {"PFC_WD": {"GLOBAL": {}}}
12781
config_wrapper = gu_common.ConfigWrapper()
12882
self.assertRaises(gu_common.IllegalPatchOperationError, config_wrapper.validate_field_operation, old_config, target_config)
12983

0 commit comments

Comments
 (0)