Skip to content

Commit

Permalink
fix: some protocols or types are not in GOC
Browse files Browse the repository at this point in the history
  • Loading branch information
fstagni committed Oct 29, 2024
1 parent 53c67a7 commit 9e0d2d0
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 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 @@ -163,9 +163,17 @@ def _prepareCommand(self):
# Determine the SE type and update gOCDBServiceType accordingly
se_type = se.options.get("SEType", "")
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"
else:
return S_ERROR(f"Unknown SE type {se_type}")
# 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 +186,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 +204,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 9e0d2d0

Please sign in to comment.