""" A set of utilities for getting configuration information for the WMS components """ from __future__ import absolute_import from __future__ import division from __future__ import print_function __RCSID__ = "c59810311 (2021-10-01 10:44:25 +0200) Chris Burr " from DIRAC import S_OK, S_ERROR, gLogger from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager from DIRAC.ConfigurationSystem.Client.Helpers import Registry, Operations def findGenericPilotCredentials(vo=False, group=False, pilotDN="", pilotGroup=""): """Looks into the Operations/<>/Pilot section of CS to find the pilot credentials. Then check if the user has a registered proxy in ProxyManager. if pilotDN or pilotGroup are specified, use them :param str vo: VO name :param str group: group name :param str pilotDN: pilot DN :param str pilotGroup: pilot group :return: S_OK(tuple)/S_ERROR() """ if not group and not vo: return S_ERROR("Need a group or a VO to determine the Generic pilot credentials") if not vo: vo = Registry.getVOForGroup(group) if not vo: return S_ERROR("Group %s does not have a VO associated" % group) opsHelper = Operations.Operations(vo=vo) if not pilotGroup: pilotGroup = opsHelper.getValue("Pilot/GenericPilotGroup", "") if not pilotDN: pilotDN = opsHelper.getValue("Pilot/GenericPilotDN", "") if not pilotDN: pilotUser = opsHelper.getValue("Pilot/GenericPilotUser", "") if pilotUser: result = Registry.getDNForUsername(pilotUser) if result["OK"]: pilotDN = result["Value"][0] if pilotDN and pilotGroup: gLogger.verbose("Pilot credentials: %s@%s" % (pilotDN, pilotGroup)) result = gProxyManager.userHasProxy(pilotDN, pilotGroup, 86400) if not result["OK"]: return S_ERROR("%s@%s has no proxy in ProxyManager") return S_OK((pilotDN, pilotGroup)) if pilotDN: return S_ERROR("DN %s does not have group %s" % (pilotDN, pilotGroup)) return S_ERROR("No generic proxy in the Proxy Manager with groups %s" % pilotGroup)