Exemple #1
0
def _getProxyInfo( proxyPath = False ):
  if not proxyPath:
    proxyPath = _getProxyLocation( )

  proxy_info = ProxyInfo.getProxyInfo( proxyPath, False )

  return proxy_info
 def printInfo(self):
     result = ProxyInfo.getProxyInfoAsString(self.__proxyGenerated)
     if not result['OK']:
         gLogger.error('Failed to get the new proxy info: %s' %
                       result['Message'])
     else:
         gLogger.notice("Proxy generated:")
         gLogger.notice(result['Value'])
     if self.__uploadedInfo:
         gLogger.notice("\nProxies uploaded:")
         maxDNLen = 0
         maxGroupLen = 0
         for userDN in self.__uploadedInfo:
             maxDNLen = max(maxDNLen, len(userDN))
             for group in self.__uploadedInfo[userDN]:
                 maxGroupLen = max(maxGroupLen, len(group))
         gLogger.notice(" %s | %s | Until (GMT)" %
                        ("DN".ljust(maxDNLen), "Group".ljust(maxGroupLen)))
         for userDN in self.__uploadedInfo:
             for group in self.__uploadedInfo[userDN]:
                 gLogger.notice(
                     " %s | %s | %s" %
                     (userDN.ljust(maxDNLen), group.ljust(maxGroupLen),
                      self.__uploadedInfo[userDN][group].strftime(
                          "%Y/%m/%d %H:%M")))
Exemple #3
0
 def printInfo(self):
     result = ProxyInfo.getProxyInfoAsString(self.__proxyGenerated)
     if not result["OK"]:
         gLogger.error("Failed to get the new proxy info: %s" % result["Message"])
     else:
         gLogger.notice("Proxy generated:")
         gLogger.notice(result["Value"])
     if self.__uploadedInfo:
         gLogger.notice("\nProxies uploaded:")
         maxDNLen = 0
         maxGroupLen = 0
         for userDN in self.__uploadedInfo:
             maxDNLen = max(maxDNLen, len(userDN))
             for group in self.__uploadedInfo[userDN]:
                 maxGroupLen = max(maxGroupLen, len(group))
         gLogger.notice(" %s | %s | Until (GMT)" % ("DN".ljust(maxDNLen), "Group".ljust(maxGroupLen)))
         for userDN in self.__uploadedInfo:
             for group in self.__uploadedInfo[userDN]:
                 gLogger.notice(
                     " %s | %s | %s"
                     % (
                         userDN.ljust(maxDNLen),
                         group.ljust(maxGroupLen),
                         self.__uploadedInfo[userDN][group].strftime("%Y/%m/%d %H:%M"),
                     )
                 )
Exemple #4
0
 def __init__(self, *args, **kw):
     fuse.fuse_python_api = (0, 2)
     fuse.Fuse.__init__(self, *args, **kw)
     self.tmpdir = tmpdir
     self.SE = "DIRAC-USER"
     self.file = {}
     self.result = {}
     from DIRAC.Core.Security import ProxyInfo
     self.proxy = ProxyInfo.getProxyInfo()
Exemple #5
0
 def __init__(self, *args, **kw):
     fuse.fuse_python_api = (0, 2)
     fuse.Fuse.__init__(self, *args, **kw)
     self.tmpdir = tmpdir
     self.SE = "DIRAC-USER"
     self.file = {}
     self.result = {}
     from DIRAC.Core.Security import ProxyInfo
     self.proxy = ProxyInfo.getProxyInfo()
Exemple #6
0
def main():
    """
  main program entry point
  """
    options = Params()
    options.registerCLISwitches()

    Script.parseCommandLine(ignoreErrors=True)

    if options.delete_all and options.vos:
        gLogger.error(
            "-a and -v options are mutually exclusive. Please pick one or the other."
        )
        return 1

    proxyLoc = Locations.getDefaultProxyLocation()

    if not os.path.exists(proxyLoc):
        gLogger.error("No local proxy found in %s, exiting." % proxyLoc)
        return 1

    result = ProxyInfo.getProxyInfo(proxyLoc, True)
    if not result['OK']:
        raise RuntimeError('Failed to get local proxy info.')

    if result['Value']['secondsLeft'] < 60 and options.needsValidProxy():
        raise RuntimeError(
            'Lifetime of local proxy too short, please renew proxy.')

    userDN = result['Value']['identity']

    if options.delete_all:
        # delete remote proxies
        remote_groups = getProxyGroups()
        if not remote_groups:
            gLogger.notice('No remote proxies found.')
        for vo_group in remote_groups:
            deleteRemoteProxy(userDN, vo_group)
        # delete local proxy
        deleteLocalProxy(proxyLoc)
    elif options.vos:
        vo_groups = set()
        for voname in options.vos:
            vo_groups.update(mapVoToGroups(voname))
        # filter set of all groups to only contain groups for which there is a user proxy
        user_groups = getProxyGroups()
        vo_groups.intersection_update(user_groups)
        if not vo_groups:
            gLogger.notice(
                'You have no proxies registered for any of the specified VOs.')
        for group in vo_groups:
            deleteRemoteProxy(userDN, group)
    else:
        deleteLocalProxy(proxyLoc)

    return 0
Exemple #7
0
def _userInfo():
    retVal = ProxyInfo.getProxyInfo()
    assert retVal["OK"], retVal
    proxyInfo = retVal["Value"]
    currentUser = proxyInfo["username"]
    currentDN = proxyInfo["DN"]
    currentGroup = proxyInfo["group"]
    userVO = Registry.getVOForGroup(currentGroup)

    return currentUser, currentDN, currentGroup, userVO
def main():
  """
  main program entry point
  """
  options = Params()
  options.registerCLISwitches()

  Script.parseCommandLine( ignoreErrors = True )

  if options.delete_all and options.vos:
    gLogger.error( "-a and -v options are mutually exclusive. Please pick one or the other." )
    return 1

  proxyLoc = Locations.getDefaultProxyLocation()

  if not os.path.exists( proxyLoc ):
    gLogger.error( "No local proxy found in %s, exiting." % proxyLoc )
    return 1

  result = ProxyInfo.getProxyInfo( proxyLoc, True )
  if not result[ 'OK' ]:
    raise RuntimeError( 'Failed to get local proxy info.' )

  if result[ 'Value' ][ 'secondsLeft' ] < 60 and options.needsValidProxy():
    raise RuntimeError( 'Lifetime of local proxy too short, please renew proxy.' )

  userDN=result[ 'Value' ][ 'identity' ]

  if options.delete_all:
    # delete remote proxies
    remote_groups = getProxyGroups()
    if not remote_groups:
      gLogger.notice( 'No remote proxies found.' )
    for vo_group in remote_groups:
      deleteRemoteProxy( userDN, vo_group )
    # delete local proxy
    deleteLocalProxy( proxyLoc )
  elif options.vos:
    vo_groups = set()
    for voname in options.vos:
      vo_groups.update(mapVoToGroups( voname ) )
    # filter set of all groups to only contain groups for which there is a user proxy
    user_groups = getProxyGroups()
    vo_groups.intersection_update( user_groups )
    if not vo_groups:
      gLogger.notice( 'You have no proxies registered for any of the specified VOs.' )
    for group in vo_groups:
      deleteRemoteProxy( userDN, group )
  else:
    deleteLocalProxy( proxyLoc )

  return 0
Exemple #9
0
 def setUpClass( cls ):
   # destroy kerberos token
   #try:
   #  subprocess.call(['kdestroy'])
   #except subprocess.CalledProcessError as err:
   #  print "WARNING: kdestroy did not succeed."
   #  print err.output
   # Constants for the tests
   Script.parseCommandLine()
   user = ProxyInfo.getProxyInfo()['Value']['username']
   SETestCase.lfntestfilepath += '%s/%s/setests/%s/' % (user[0], user, randomFolder())
   print "Using lfn %s" % SETestCase.lfntestfilepath
   SETestCase.lfntestfile = SETestCase.lfntestfilepath + SETestCase.lfntestfilename
Exemple #10
0
 def setUpClass(cls):
     # destroy kerberos token
     #try:
     #  subprocess.call(['kdestroy'])
     #except subprocess.CalledProcessError as err:
     #  print "WARNING: kdestroy did not succeed."
     #  print err.output
     # Constants for the tests
     Script.parseCommandLine()
     user = ProxyInfo.getProxyInfo()['Value']['username']
     SETestCase.lfntestfilepath += '%s/%s/setests/%s/' % (user[0], user,
                                                          randomFolder())
     print "Using lfn %s" % SETestCase.lfntestfilepath
     SETestCase.lfntestfile = SETestCase.lfntestfilepath + SETestCase.lfntestfilename
 def printInfo( self ):
   gLogger.notice( "Proxy generated:" )
   gLogger.notice( ProxyInfo.getProxyInfoAsString( self.__proxyGenerated )[ 'Value' ] )
   if self.__uploadedInfo:
     gLogger.notice( "\nProxies uploaded:" )
     maxDNLen = 0
     maxGroupLen = 0
     for userDN in self.__uploadedInfo:
       maxDNLen = max( maxDNLen, len( userDN ) )
       for group in self.__uploadedInfo[ userDN ]:
         maxGroupLen = max( maxGroupLen, len( group ) )
     gLogger.notice( " %s | %s | Until (GMT)" % ( "DN".ljust( maxDNLen ), "Group".ljust( maxGroupLen ) ) )
     for userDN in self.__uploadedInfo:
       for group in self.__uploadedInfo[ userDN ]:
         gLogger.notice( " %s | %s | %s" % ( userDN.ljust( maxDNLen ),
                                                 group.ljust( maxGroupLen ),
                                                 self.__uploadedInfo[ userDN ][ group ].strftime( "%Y/%m/%d %H:%M" ) ) )
 def printInfo( self ):
   gLogger.notice( "Proxy generated:" )
   gLogger.notice( ProxyInfo.getProxyInfoAsString( self.__proxyGenerated )[ 'Value' ] )
   if self.__uploadedInfo:
     gLogger.notice( "\nProxies uploaded:" )
     maxDNLen = 0
     maxGroupLen = 0
     for userDN in self.__uploadedInfo:
       maxDNLen = max( maxDNLen, len( userDN ) )
       for group in self.__uploadedInfo[ userDN ]:
         maxGroupLen = max( maxGroupLen, len( group ) )
     gLogger.notice( " %s | %s | Until (GMT)" % ( "DN".ljust( maxDNLen ), "Group".ljust( maxGroupLen ) ) )
     for userDN in self.__uploadedInfo:
       for group in self.__uploadedInfo[ userDN ]:
         gLogger.notice( " %s | %s | %s" % ( userDN.ljust( maxDNLen ),
                                                 group.ljust( maxGroupLen ),
                                                 self.__uploadedInfo[ userDN ][ group ].strftime( "%Y/%m/%d %H:%M" ) ) )
Exemple #13
0
 def printInfo(self):
   """ Printing utilities
   """
   resultProxyInfoAsAString = ProxyInfo.getProxyInfoAsString(self.__proxyGenerated)
   if not resultProxyInfoAsAString['OK']:
     gLogger.error('Failed to get the new proxy info: %s' % resultProxyInfoAsAString['Message'])
   else:
     gLogger.notice("Proxy generated:")
     gLogger.notice(resultProxyInfoAsAString['Value'])
   if self.__uploadedInfo:
     gLogger.notice("\nProxies uploaded:")
     maxDNLen = 0
     maxProviderLen = len('ProxyProvider')
     for userDN, data in self.__uploadedInfo.items():
       maxDNLen = max(maxDNLen, len(userDN))
       maxProviderLen = max(maxProviderLen, len(data['provider']))
     gLogger.notice(" %s | %s | %s | SupportedGroups" % ("DN".ljust(maxDNLen), "ProxyProvider".ljust(maxProviderLen),
                                                         "Until (GMT)".ljust(16)))
     for userDN, data in self.__uploadedInfo.items():
       gLogger.notice(" %s | %s | %s | " % (userDN.ljust(maxDNLen), data['provider'].ljust(maxProviderLen),
                                            data['expirationtime'].strftime("%Y/%m/%d %H:%M").ljust(16)),
                      ",".join(data['groups']))
Exemple #14
0
    profile = args[0]

if params.destroy:
    session = DSession()
    os.unlink(session.configPath)
    DIRAC.exit(0)

session = None
if params.fromProxy:
    retVal = Script.enableCS()
    if not retVal["OK"]:
        critical(retVal["Message"])

    session = sessionFromProxy()
else:
    session = DSession(profile)

if not session:
    print "Error: Session couldn't be initialized"
    DIRAC.exit(-1)

session.write()

session.checkProxyOrInit()
retVal = session.proxyInfo()
if not retVal["OK"]:
    print retVal["Message"]
    DIRAC.exit(-1)

print ProxyInfo.formatProxyInfoAsString(retVal["Value"])
Exemple #15
0
  def submitJob( self, executableFile, proxyObj, jobData ):
    """ Method to submit job
    """
    self.log.info( "Executable file is %s" % executableFile )
    self.__proxyObj = proxyObj
    self.__execFile = executableFile
    self.__jobData = jobData

    self.log.verbose( 'Setting up proxy for payload' )
    result = self.writeProxyToFile( self.__proxyObj )
    if not result['OK']:
      return result
    self.__payloadProxyLocation = result['Value']

    glEnabled = True
    glOK = True

    if gConfig.getValue( "/DIRAC/Security/UseServerCertificate", False ):
      self.log.info( "Running with a certificate. Avoid using glexec" )
      glEnabled = False
    else:
      result = ProxyInfo.getProxyInfo( self.__pilotProxyLocation, disableVOMS = True )
      if result[ 'OK' ]:
        if not Properties.GENERIC_PILOT in result[ 'Value' ].get( 'groupProperties', [] ):
          self.log.info( "Pilot is NOT running with a generic pilot. Skipping glexec" )
          glEnabled = False
        else:
          self.log.info( "Pilot is generic. Trying glexec" )

    if not glEnabled:
      self.log.notice( "glexec is not enabled ")
    else:
      self.log.info( "Trying glexec..." )
      for step in ( self.__check_credentials, self.__locate_glexec,
                    self.__prepare_glenv, self.__prepare_tmpdir,
                    self.__test, self.__construct_payload ):
        self.log.info( "Running step %s" % step.__name__ )
        result = step()
        if not result[ 'OK' ]:
          self.log.error( "Step %s failed: %s" % ( step.__name__, result[ 'Message' ] ) )
          if self.ceParameters.get( "RescheduleOnError", False ):
            result = S_ERROR( 'glexec CE failed on step %s : %s' % ( step.__name__, result[ 'Message' ] ) )
            result['ReschedulePayload'] = True
            return result
          glOK = False
          break
      if not glOK:
        self.log.notice( "glexec failed miserably... Running without it." )

    self.log.verbose( 'Starting process for monitoring payload proxy' )
    result = gThreadScheduler.addPeriodicTask( self.proxyCheckPeriod, self.monitorProxy,
                                               taskArgs = ( self.__pilotProxyLocation, self.__payloadProxyLocation ),
                                               executions = 0, elapsedTime = 0 )
    if not result[ 'OK' ]:
      return S_ERROR( "Could not schedule monitor proxy task: %s" % result[ 'Message' ] )
    pTask = result[ 'Value' ]

    if glEnabled and glOK:
      result = self.__execute( [ self.__glCommand ] )
    else:
      result = self.__executeInProcess( executableFile )
    gThreadScheduler.removeTask( pTask )
    self.__cleanup()
    return result