Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add WMWorkload.validateSiteLisitsUpdate method. #12260

Conversation

todor-ivanov
Copy link
Contributor

@todor-ivanov todor-ivanov commented Feb 11, 2025

Fixes #12250

Status

ready

Description

During the validation of the user provided request_args we have a step to mandatory check against the spec arguments from here:

validateArgumentsUpdate(schema, argumentDefinition, optionKey=None)

and subsequently the siteLists from here:

validateSiteLists(arguments)

Unfortunately the so defined function at WMWorloadTools.validateSiteLists sets the sitelists to empty lists by default (even in the case they are completely missing from the so provided by the user request_args):

def validateSiteLists(arguments):
whiteList = arguments.get("SiteWhitelist", [])
blackList = arguments.get("SiteBlacklist", [])
whiteList = makeList(whiteList)
blackList = makeList(blackList)
res = (set(whiteList) & set(blackList))
if len(res):
msg = "Validation failed: The same site cannot be white and blacklisted: %s" % list(res)
raise WMSpecFactoryException(msg)
# store the properly formatted values (list instead of string)
arguments["SiteWhitelist"] = whiteList
arguments["SiteBlacklist"] = blackList
return

This causes the following behavior:

During the call to validate a dictionary of arguments provided by the user which is missing the siteWhitelist or SiteBlacklist at ReqMgr2 - here:

workload.validateArgumentsPartialUpdate(request_args)

The siteLists are set to empty lists before we enter the sequence of steps to update both the request at ReqMgr and all the WorkQueuElements.

Here is a printout of this effect produced by an interactive debugging session again together with @mapellidario:

[11/Feb/2025:15:34:51]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 700}
Before Validation:{'RequestPriority': 700}
After  Validation:{'RequestPriority': 700, 'SiteWhitelist': [], 'SiteBlacklist': []}
Calling _handleNoStatusUpdate
[11/Feb/2025:15:34:51]  Handling request: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 with CurrentRequest status: running-open
[11/Feb/2025:15:34:51]  reqArgs: {'RequestPriority': 700, 'SiteWhitelist': []}

This way the so produced empty lists enter as argument difference in reqArgsDiff and are considered as a change to empty SiteWhilist and SiteBlacklist and upon that updated in the workflow spec. Causing the so reported bug.

Here is the result after applying the current patch:

[11/Feb/2025:15:52:11]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 900}
Before Validation:{'RequestPriority': 900}
After  Validation:{'RequestPriority': 900}
Calling _handleNoStatusUpdate
[11/Feb/2025:15:52:11]  Handling request: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 with CurrentRequest status: running-open
[11/Feb/2025:15:52:11]  reqArgs: {'RequestPriority': 900}

It is obvious now that the Request._handleNoStatusUpdate method is called without the empty siteLists

Is it backward compatible (if not, which system it affects?)

YES

Related PRs

The PR introducing the bug was: #12099

External dependencies / deployment changes

N/A

@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 changes in unstable tests
  • Python3 Pylint check: failed
    • 4 warnings and errors that must be fixed
    • 1 warnings
    • 68 comments to review
  • Pycodestyle check: succeeded
    • 18 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/351/artifact/artifacts/PullRequestReport.html

@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 3 changes in unstable tests
  • Python3 Pylint check: failed
    • 4 warnings and errors that must be fixed
    • 1 warnings
    • 68 comments to review
  • Pycodestyle check: succeeded
    • 18 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/352/artifact/artifacts/PullRequestReport.html

Copy link
Contributor

@amaltaro amaltaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for providing this fix. In addition to the comment along the code, I also have a comment on the WMWorkloadTools, but I'd rather have it here than along the code. So here it goes.

Even though that looks the way to go, I am not sure whether that is the correct system-wide fix.

When a workflow is created or assigned, the workflow factory is loaded and arguments are:

so I am afraid that with this change, we will be either causing an error somewhere else or setting these to None as default.

I'd suggest to test/investigate those cases as well.

@@ -33,6 +33,8 @@ def makeList(stringList):
throws a ValueError if the input is not well formed.
If the stringList is already of type list, then return it untouched.
"""
# NOTE: In case of a change to this function beware of side effects which
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the Utils package is supposed to be agnostic of any WMCore-specific logic, I would suggest to remove this comment, please.

@todor-ivanov
Copy link
Contributor Author

ok this:

When a workflow is created or assigned, the workflow factory is loaded and arguments are:

Tells the whole story. This function has been already developed under the presumption there is no previously set parameters at the workflow. In addition to that, it will not only NOT work for updates of already existing parameters, but it would rather miss eventual SiteBlacklist vs. SiteWhitelists conflicts between the sets of already existing + new arguments. Because in the current version of this function it checks for such conflicts only in among the site lists provided with the call but not with the already existing ones.

I am going to change the code. And will not touch the old one in any way. It would be better in my opinion.

@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 4 changes in unstable tests
  • Python3 Pylint check: failed
    • 5 warnings and errors that must be fixed
    • 1 warnings
    • 81 comments to review
  • Pycodestyle check: succeeded
    • 16 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/355/artifact/artifacts/PullRequestReport.html

@todor-ivanov
Copy link
Contributor Author

And here follow the printouts from Reqmgr's logs and the HTTP headers returned for a set of calls, generated with an external script to a patched Reqmgr instance:

  • Changing only the priority of a workflow:

The call with the HTTPErrors returned:

(WMCore.venv3) [tivanov@tivanov-unit03 WMCore]$ setWfParams tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 '{"RequestPriority":700}'
Setting newParams: {'RequestPriority': 700} for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
/data/WMCore.venv3/bin/setWfParams:21: DeprecationWarning: key_file, cert_file and check_hostname are deprecated, use a custom context instead.
  conn = http.client.HTTPSConnection(url, cert_file=os.getenv('X509_USER_PROXY'), key_file=os.getenv('X509_USER_PROXY'))
  OK!

The ReqMgr logs:

[12/Feb/2025:13:11:20]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 700}
Before Validation: {'RequestPriority': 700}
After  Validation: {'RequestPriority': 700}
[12/Feb/2025:13:11:20]  Handling request: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 with CurrentRequest status: running-open
  • A change only to SiteWhitelist

The call with the HTTPErrors returned:

(WMCore.venv3) [tivanov@tivanov-unit03 WMCore]$ setWfParams tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 '{"RequestPriority":300, "SiteWhitelist": ["T2_CH_CERN", "T1_US_FNAL"]}'
Setting newParams: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL']} for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
/data/WMCore.venv3/bin/setWfParams:21: DeprecationWarning: key_file, cert_file and check_hostname are deprecated, use a custom context instead.
  conn = http.client.HTTPSConnection(url, cert_file=os.getenv('X509_USER_PROXY'), key_file=os.getenv('X509_USER_PROXY'))
  OK!

The ReqMgr logs:

[12/Feb/2025:13:11:05]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL']}
Before Validation: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL']}
After  Validation: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL']}
[12/Feb/2025:13:11:05]  Handling request: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 with CurrentRequest status: running-open
[12/Feb/2025:13:11:05]  Nothing to be changed at this stage for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
  • A change to both SiteWhitelist && siteBlacklist:

The call with the HTTPErrors returned:

(WMCore.venv3) [tivanov@tivanov-unit03 WMCore]$ setWfParams tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 '{"RequestPriority":300, "SiteWhitelist": ["T2_CH_CERN", "T1_US_FNAL"], "SiteBlacklist": ["T1_DE_KIT"]}'
Setting newParams: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T1_DE_KIT']} for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
/data/WMCore.venv3/bin/setWfParams:21: DeprecationWarning: key_file, cert_file and check_hostname are deprecated, use a custom context instead.
  conn = http.client.HTTPSConnection(url, cert_file=os.getenv('X509_USER_PROXY'), key_file=os.getenv('X509_USER_PROXY'))
  OK!

The ReqMgr logs:

[12/Feb/2025:13:15:36]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T1_DE_KIT']}
Before Validation: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T1_DE_KIT']}
After  Validation: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T1_DE_KIT']}
[12/Feb/2025:13:15:36]  Handling request: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 with CurrentRequest status: running-open
  • A change to both to SiteBlacklist && SiteWhitelist creating a conflict with a site already existing in SiteWhitelist:

The call with the HTTPErrors returned:

(WMCore.venv3) [tivanov@tivanov-unit03 WMCore]$ setWfParams tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 '{"RequestPriority":300, "SiteWhitelist": ["T2_CH_CERN", "T1_US_FNAL"], "SiteBlacklist": ["T2_CH_CERN"]}'
Setting newParams: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T2_CH_CERN']} for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
/data/WMCore.venv3/bin/setWfParams:21: DeprecationWarning: key_file, cert_file and check_hostname are deprecated, use a custom context instead.
  conn = http.client.HTTPSConnection(url, cert_file=os.getenv('X509_USER_PROXY'), key_file=os.getenv('X509_USER_PROXY'))
Response status: 400	Response reason: Bad Request	Error-detail: Invalid spec parameter value: Validation failed: The same site cannot be white and blacklisted: ['T2_CH_CERN']
  FAILED setting workflow parameters: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T2_CH_CERN']} for: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256

The ReqMgr logs:

[12/Feb/2025:13:14:14]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T2_CH_CERN']}
Before Validation: {'RequestPriority': 300, 'SiteWhitelist': ['T2_CH_CERN', 'T1_US_FNAL'], 'SiteBlacklist': ['T2_CH_CERN']}
[12/Feb/2025:13:14:15]  Error: Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 190, in validate
    self._validateRequestBase(param, safe, validate_request_update_args, requestName)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 102, in _validateRequestBase
    workload, r_args = valFunc(args, self.config, self.reqmgr_db_service, param)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Utils/Validation.py", line 122, in validate_request_update_args
    workload.validateArgumentsPartialUpdate(request_args)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py", line 2107, in validateArgumentsPartialUpdate
    self.validateSiteListsUpdate(arguments)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py", line 2071, in validateSiteListsUpdate
    validateSiteLists(arguments)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py", line 255, in validateSiteLists
    raise WMSpecFactoryException(msg)
WMCore.WMSpec.WMSpecErrors.WMSpecFactoryException: <@========== WMException Start ==========@>
Exception Class: WMSpecFactoryException
Message: Validation failed: The same site cannot be white and blacklisted: ['T2_CH_CERN']
	ClassName : None
	ModuleName : WMCore.WMSpec.WMWorkloadTools
	MethodName : validateSiteLists
	ClassInstance : None
	FileName : /usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py
	LineNumber : 255
	ErrorNr : 0

Traceback: 

<@---------- WMException End ----------@>

[12/Feb/2025:13:14:15]  SERVER REST ERROR WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue ff1fb96a2e7617be5679bf5946d7b9fd (Invalid spec parameter value: Validation failed: The same site cannot be white and blacklisted: ['T2_CH_CERN'])
[12/Feb/2025:13:14:15]    Traceback (most recent call last):
[12/Feb/2025:13:14:15]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 749, in default
[12/Feb/2025:13:14:15]        return self._call(RESTArgs(list(args), kwargs))
[12/Feb/2025:13:14:15]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 828, in _call
[12/Feb/2025:13:14:15]        v(apiobj, request.method, api, param, safe)
[12/Feb/2025:13:14:15]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 225, in validate
[12/Feb/2025:13:14:15]        raise InvalidSpecParameterValue(msg) from None
[12/Feb/2025:13:14:15]    WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue: InvalidSpecParameterValue ff1fb96a2e7617be5679bf5946d7b9fd [HTTP 400, APP 1102, MSG "Invalid spec parameter value: Validation failed: The same site cannot be white and blacklisted: ['T2_CH_CERN']", INFO None, ERR None]

  • A change only to SiteBlacklist creating a conflict with a site already existing in SiteWhitelist:

The call with the HTTPErrors returned:

(WMCore.venv3) [tivanov@tivanov-unit03 WMCore]$ setWfParams tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256 '{"RequestPriority":300, "SiteBlacklist": ["T2_CH_CERN"]}'
Setting newParams: {'RequestPriority': 300, 'SiteBlacklist': ['T2_CH_CERN']} for tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256
/data/WMCore.venv3/bin/setWfParams:21: DeprecationWarning: key_file, cert_file and check_hostname are deprecated, use a custom context instead.
  conn = http.client.HTTPSConnection(url, cert_file=os.getenv('X509_USER_PROXY'), key_file=os.getenv('X509_USER_PROXY'))
Response status: 400	Response reason: Bad Request	Error-detail: Invalid spec parameter value: Validation of Site Lists for update failed due to conflicts with existing Site Lists. A site can only be black listed or whitelisted. Conflicting sites: {'T2_CH_CERN'}
  FAILED setting workflow parameters: {'RequestPriority': 300, 'SiteBlacklist': ['T2_CH_CERN']} for: tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256

The ReqMgr logs:

[12/Feb/2025:13:30:44]  Updating request "tivanov_TaskChain_LumiMask_multiRun_SiteListsTest_v7_241210_093449_7256" with these user-provided args: {'RequestPriority': 300, 'SiteBlacklist': ['T2_CH_CERN']}
Before Validation: {'RequestPriority': 300, 'SiteBlacklist': ['T2_CH_CERN']}
[12/Feb/2025:13:30:45]  Error: Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 190, in validate
    self._validateRequestBase(param, safe, validate_request_update_args, requestName)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 102, in _validateRequestBase
    workload, r_args = valFunc(args, self.config, self.reqmgr_db_service, param)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Utils/Validation.py", line 122, in validate_request_update_args
    workload.validateArgumentsPartialUpdate(request_args)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py", line 2107, in validateArgumentsPartialUpdate
    self.validateSiteListsUpdate(arguments)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py", line 2085, in validateSiteListsUpdate
    raise WMSpecFactoryException(msg)
WMCore.WMSpec.WMSpecErrors.WMSpecFactoryException: <@========== WMException Start ==========@>
Exception Class: WMSpecFactoryException
Message: Validation of Site Lists for update failed due to conflicts with existing Site Lists. A site can only be black listed or whitelisted. Conflicting sites: {'T2_CH_CERN'}
	ClassName : None
	ModuleName : WMCore.WMSpec.WMWorkload
	MethodName : validateSiteListsUpdate
	ClassInstance : None
	FileName : /usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py
	LineNumber : 2085
	ErrorNr : 0

Traceback: 

<@---------- WMException End ----------@>

[12/Feb/2025:13:30:45]  SERVER REST ERROR WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue cd21a45387c7c619ed9f4b2caf078bdb (Invalid spec parameter value: Validation of Site Lists for update failed due to conflicts with existing Site Lists. A site can only be black listed or whitelisted. Conflicting sites: {'T2_CH_CERN'})
[12/Feb/2025:13:30:45]    Traceback (most recent call last):
[12/Feb/2025:13:30:45]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 749, in default
[12/Feb/2025:13:30:45]        return self._call(RESTArgs(list(args), kwargs))
[12/Feb/2025:13:30:45]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 828, in _call
[12/Feb/2025:13:30:45]        v(apiobj, request.method, api, param, safe)
[12/Feb/2025:13:30:45]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 225, in validate
[12/Feb/2025:13:30:45]        raise InvalidSpecParameterValue(msg) from None
[12/Feb/2025:13:30:45]    WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue: InvalidSpecParameterValue cd21a45387c7c619ed9f4b2caf078bdb [HTTP 400, APP 1102, MSG "Invalid spec parameter value: Validation of Site Lists for update failed due to conflicts with existing Site Lists. A site can only be black listed or whitelisted. Conflicting sites: {'T2_CH_CERN'}", INFO None, ERR None]

Copy link
Contributor

@amaltaro amaltaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you also test a case where the user provides a non-empty list for SiteWhitelist and an empty list for SiteBlacklist?

src/python/WMCore/WMSpec/WMWorkload.py Show resolved Hide resolved
@todor-ivanov
Copy link
Contributor Author

Did you also test a case where the user provides a non-empty list for SiteWhitelist and an empty list for SiteBlacklist?

Yes, It behaves exactly as expected. I just did not want to overload the already too long printouts, since this is a case similar to having the SiteBlacklist provided while SiteWhitelist empty. It will be addressed in the unit tests though.

@todor-ivanov todor-ivanov force-pushed the bugfix_Reqmgr2_SiteListsBrokenValidation_fix-12250 branch from 7af9371 to 7669bfd Compare February 13, 2025 13:07
@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 3 changes in unstable tests
  • Python3 Pylint check: failed
    • 5 warnings and errors that must be fixed
    • 1 warnings
    • 81 comments to review
  • Pycodestyle check: succeeded
    • 15 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/362/artifact/artifacts/PullRequestReport.html

Adding a comment to Utils.Utilities.makeList function.

Revert all the changes to WMWorkloadTools.validateSiteLists && Add WMWorkload.validateSiteListsUpdate method

Fix exception messages

Covert conflicting sites set to list in ErrorMsg
Unit test
@todor-ivanov todor-ivanov force-pushed the bugfix_Reqmgr2_SiteListsBrokenValidation_fix-12250 branch from 9da2f49 to 8302c40 Compare February 13, 2025 14:44
@todor-ivanov todor-ivanov changed the title WorkloadTools.ValidateSiteLisits does not set empty lists by default. Add Workload.ValidateSiteLisitsUpdate method. Feb 13, 2025
@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 1 tests added
    • 3 changes in unstable tests
  • Python3 Pylint check: failed
    • 19 warnings and errors that must be fixed
    • 2 warnings
    • 235 comments to review
  • Pycodestyle check: succeeded
    • 54 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/363/artifact/artifacts/PullRequestReport.html

@dmwm-bot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 1 new failures
    • 1 tests added
    • 4 changes in unstable tests
  • Python3 Pylint check: failed
    • 19 warnings and errors that must be fixed
    • 2 warnings
    • 235 comments to review
  • Pycodestyle check: succeeded
    • 54 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/WMCore-PR-Report/364/artifact/artifacts/PullRequestReport.html

@todor-ivanov todor-ivanov changed the title Add Workload.ValidateSiteLisitsUpdate method. Add WMWorkload.validateSiteLisitsUpdate method. Feb 13, 2025
@amaltaro
Copy link
Contributor

@todor-ivanov if this is ready to go, feel free to merge it in and backport it to branch 2.3.8_cmsweb and follow with a patch release. This should be documented in https://cms-wmcore.docs.cern.ch/wmcore/TaggingAndReleasing/#cutting-a-patch-release
Thanks!

@todor-ivanov todor-ivanov merged commit f4de587 into dmwm:master Feb 14, 2025
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Updating priority of a workflow from a script sets the whitelist to an empty list
3 participants