Skip to content

Commit 3261199

Browse files
verify CS config using diracx model validation
1 parent 4f07d49 commit 3261199

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from diracx.core.config.schema import Config as DiracxConfig
2+
from pydantic import ValidationError
3+
4+
from DIRAC import S_ERROR, S_OK
5+
6+
7+
def diracxVerifyConfig(cfgData):
8+
"""Verify CS config using DiracX config validation
9+
10+
Args:
11+
cfgData: CS config data
12+
13+
Returns:
14+
S_OK | S_ERROR: Value: diracx config validation
15+
"""
16+
cfg = cfgData.getAsDict()
17+
try:
18+
validation = DiracxConfig.model_validate(cfg)
19+
except ValidationError as exc:
20+
return S_ERROR(exc)
21+
return S_OK(validation)

src/DIRAC/ConfigurationSystem/private/Modificator.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
""" This is the guy that actually modifies the content of the CS
22
"""
3-
import zlib
4-
import difflib
53
import datetime
4+
import difflib
5+
import zlib
66

77
from diraccfg import CFG
8-
from DIRAC.Core.Utilities import List
8+
9+
from DIRAC import gLogger
910
from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData
11+
from DIRAC.ConfigurationSystem.private.DiracX import diracxVerifyConfig
1012
from DIRAC.Core.Security.ProxyInfo import getProxyInfo
13+
from DIRAC.Core.Utilities import List
1114

1215

1316
class Modificator:
@@ -239,6 +242,9 @@ def __str__(self):
239242
return str(self.cfgData)
240243

241244
def commit(self):
245+
resVerif = diracxVerifyConfig(self.cfgData)
246+
if not resVerif['OK']:
247+
gLogger.warn(resVerif['Value'])
242248
compressedData = zlib.compress(str(self.cfgData).encode(), 9)
243249
return self.rpcClient.commitNewData(compressedData)
244250

0 commit comments

Comments
 (0)