Skip to content

Commit

Permalink
Merge pull request #7859 from fstagni/80_rss_notGOC
Browse files Browse the repository at this point in the history
[8.0] RSS fix: some protocols or types are not in GOC
  • Loading branch information
chrisburr authored Nov 4, 2024
2 parents bb24b5c + dd86934 commit 23a864a
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions src/DIRAC/ResourceStatusSystem/Command/DowntimeCommand.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def _prepareCommand(self):
else:
elementName = gocSite["Value"]

# The DIRAC se names mean nothing on the grid, but their hosts and service types do mean.
# The DIRAC SE names mean nothing on the grid, but their hosts and service types do mean.
elif elementType == "StorageElement":
# Get the SE object and its protocols
try:
Expand All @@ -162,10 +162,17 @@ def _prepareCommand(self):

# Determine the SE type and update gOCDBServiceType accordingly
se_type = se.options.get("SEType", "")
diskOrTape = ""
if re.search(r"D[1-9]", se_type):
gOCDBServiceType = diracToGOC_conversion[f"disk_{se_protocols[0]}"]
diskOrTape = "disk"
elif re.search(r"T[1-9]", se_type):
gOCDBServiceType = diracToGOC_conversion[f"tape_{se_protocols[0]}"]
diskOrTape = "tape"
# iterate on the protocols and get the first one
for protocol in se_protocols:
dirac_protocol = f"{diskOrTape}_{protocol}"
if dirac_protocol in diracToGOC_conversion:
gOCDBServiceType = diracToGOC_conversion[dirac_protocol]
break

# Get the SE hosts and return an error if none are found
res = getSEHosts(elementName)
Expand All @@ -178,8 +185,10 @@ def _prepareCommand(self):
elementName = seHosts # in this case it will return a list, because there might be more than one host only

elif elementType in ["FTS", "FTS3"]:
gOCDBServiceType = diracToGOC_conversion[elementType]
# WARNING: this method presupposes that the server is an FTS3 type
try:
gOCDBServiceType = diracToGOC_conversion[elementType]
except KeyError: # not a GOC type (? how can this happen ?)
gOCDBServiceType = None
gocSite = getGOCFTSName(elementName)
if not gocSite["OK"]:
self.log.warn("FTS not in Resources/FTSEndpoints/FTS3 ?", elementName)
Expand All @@ -194,7 +203,10 @@ def _prepareCommand(self):
ceType = gConfig.getValue(
cfgPath("Resources", "Sites", siteName.split(".")[0], siteName, "CEs", elementName, "CEType")
)
gOCDBServiceType = diracToGOC_conversion[ceType]
try:
gOCDBServiceType = diracToGOC_conversion[ceType]
except KeyError: # not a GOC type (e.g. SSH CE)
gOCDBServiceType = None

return S_OK((element, elementName, hours, gOCDBServiceType))

Expand Down

0 comments on commit 23a864a

Please sign in to comment.