Skip to content

Commit cafe20f

Browse files
committed
fix: getQueue should not override the tags
1 parent c35948e commit cafe20f

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

src/DIRAC/ConfigurationSystem/Client/Helpers/Resources.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -200,29 +200,29 @@ def getSiteGrid(site):
200200
def getQueue(site, ce, queue):
201201
"""Get parameters of the specified queue"""
202202
grid = site.split(".")[0]
203-
result = gConfig.getOptionsDict(f"/Resources/Sites/{grid}/{site}/CEs/{ce}")
204-
if not result["OK"]:
203+
204+
# Get CE parameters
205+
if not (result := gConfig.getOptionsDict(f"/Resources/Sites/{grid}/{site}/CEs/{ce}"))["OK"]:
205206
return result
206-
resultDict = result["Value"]
207+
ceDict = result["Value"]
207208

208-
# Get queue defaults
209-
result = gConfig.getOptionsDict(f"/Resources/Sites/{grid}/{site}/CEs/{ce}/Queues/{queue}")
210-
if not result["OK"]:
209+
tags = set(fromChar(ceDict.get("Tag")) or [])
210+
requiredTags = set(fromChar(ceDict.get("RequiredTag")) or [])
211+
212+
# Get queue parameters
213+
if not (result := gConfig.getOptionsDict(f"/Resources/Sites/{grid}/{site}/CEs/{ce}/Queues/{queue}"))["OK"]:
211214
return result
212-
resultDict.update(result["Value"])
213-
214-
# Handle tag lists for the queue
215-
for tagFieldName in ("Tag", "RequiredTag"):
216-
tags = []
217-
ceTags = resultDict.get(tagFieldName)
218-
if ceTags:
219-
tags = fromChar(ceTags)
220-
queueTags = resultDict.get(tagFieldName)
221-
if queueTags:
222-
queueTags = fromChar(queueTags)
223-
tags = list(set(tags + queueTags))
224-
if tags:
225-
resultDict[tagFieldName] = tags
215+
queueDict = result["Value"]
216+
217+
# Union the sets to combine tags and required tags from CE and queue
218+
tags = tags.union(set(fromChar(queueDict.get("Tag")) or []))
219+
requiredTags = requiredTags.union(set(fromChar(queueDict.get("RequiredTag")) or []))
220+
221+
resultDict = {**ceDict, **queueDict}
222+
if tags:
223+
resultDict["Tag"] = list(tags)
224+
if requiredTags:
225+
resultDict["RequiredTag"] = list(requiredTags)
226226

227227
resultDict["Queue"] = queue
228228
return S_OK(resultDict)

src/DIRAC/ConfigurationSystem/Client/Helpers/test/Test_Helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,5 +200,5 @@ def test_getQueue():
200200
"LocalCEType": "Pool/Singularity",
201201
"OS": "linux_AlmaLinux_9.4.2104",
202202
}
203-
203+
assert sorted(result["Value"].pop("Tag")) == sorted(expectedDict.pop("Tag"))
204204
assert result["Value"] == expectedDict

0 commit comments

Comments
 (0)