Esempio n. 1
0
  def initialize( self ):

    self.am_setOption( 'shifterProxy', 'DataManager' )

    self.rmClient = ResourceManagementClient()

    self.commands[ 'Downtime' ]            = [ { 'Downtime'            : {} } ]
    self.commands[ 'SpaceTokenOccupancy' ] = [ { 'SpaceTokenOccupancy' : {} } ]
    self.commands[ 'Pilot' ]               = [ { 'Pilot' : { 'timespan' : 1800 } },]
#                                               { 'Pilot' : { 'timespan' : 86400 } },
#                                               { 'Pilot' : { 'timespan' : 604800 } }]
 
    
    #PilotsCommand
#    self.commands[ 'Pilots' ] = [ 
#                                 { 'PilotsWMS' : { 'element' : 'Site', 'siteName' : None } },
#                                 { 'PilotsWMS' : { 'element' : 'Resource', 'siteName' : None } } 
#                                 ]
        

    #FIXME: do not forget about hourly vs Always ...etc                                                                       
    #AccountingCacheCommand
#    self.commands[ 'AccountingCache' ] = [
#                                          {'SuccessfullJobsBySiteSplitted'    :{'hours' :24, 'plotType' :'Job' }},
#                                          {'FailedJobsBySiteSplitted'         :{'hours' :24, 'plotType' :'Job' }},
#                                          {'SuccessfullPilotsBySiteSplitted'  :{'hours' :24, 'plotType' :'Pilot' }},
#                                          {'FailedPilotsBySiteSplitted'       :{'hours' :24, 'plotType' :'Pilot' }},
#                                          {'SuccessfullPilotsByCESplitted'    :{'hours' :24, 'plotType' :'Pilot' }},
#                                          {'FailedPilotsByCESplitted'         :{'hours' :24, 'plotType' :'Pilot' }},
#                                          {'RunningJobsBySiteSplitted'        :{'hours' :24, 'plotType' :'Job' }},
##                                          {'RunningJobsBySiteSplitted'        :{'hours' :168, 'plotType' :'Job' }},
##                                          {'RunningJobsBySiteSplitted'        :{'hours' :720, 'plotType' :'Job' }},
##                                          {'RunningJobsBySiteSplitted'        :{'hours' :8760, 'plotType' :'Job' }},    
#                                          ]                                  
    
    #VOBOXAvailability
#    self.commands[ 'VOBOXAvailability' ] = [
#                                            { 'VOBOXAvailability' : {} }
#   
    
    #Reuse clients for the commands
    self.clients[ 'GOCDBClient' ]              = GOCDBClient()
    self.clients[ 'ReportGenerator' ]          = RPCClient( 'Accounting/ReportGenerator' )
    self.clients[ 'ReportsClient' ]            = ReportsClient()
    self.clients[ 'ResourceStatusClient' ]     = ResourceStatusClient()
    self.clients[ 'ResourceManagementClient' ] = ResourceManagementClient()
    self.clients[ 'PilotsDB' ]                 = PilotAgentsDB()
    self.clients[ 'WMSAdministrator' ]         = RPCClient( 'WorkloadManagement/WMSAdministrator' )

    self.cCaller = CommandCaller
    
    return S_OK()
Esempio n. 2
0
    def __init__(self, clients=None):
        """ Constructor
    
    examples:
      >>> pep = PEP()
      >>> pep1 = PEP( { 'ResourceStatusClient' : ResourceStatusClient() } )
      >>> pep2 = PEP( { 'ResourceStatusClient' : ResourceStatusClient(), 'ClientY' : None } )
    
    :Parameters:
      **clients** - [ None, `dict` ]
        dictionary with clients to be used in the commands issued by the policies.
        If not defined, the commands will import them. It is a measure to avoid
        opening the same connection every time a policy is evaluated.
        
    """

        if clients is None:
            clients = {}

        # PEP uses internally two of the clients: ResourceStatusClient and ResouceManagementClient
        if 'ResourceStatusClient' in clients:
            self.rsClient = clients['ResourceStatusClient']
        else:
            self.rsClient = ResourceStatusClient()
        if 'ResourceManagementClient' in clients:
            self.rmClient = clients['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()

        self.clients = clients
        # Pass to the PDP the clients that are going to be used on the Commands
        self.pdp = PDP(clients)
Esempio n. 3
0
    def doCommand(self):
        """ 
    Returns transfer quality as it is cached

    :attr:`args`: 
       - args[0]: string: should be a ValidRes
  
       - args[1]: string should be the name of the ValidRes

    :returns:
      {'Result': None | a float between 0.0 and 100.0}
    """
        super(TransferQualityCached_Command, self).doCommand()

        if self.client is None:
            from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient
            self.client = ResourceManagementClient(timeout=self.timeout)

        name = self.args[1]

        try:
            res = self.client.getCachedResult(name, 'TransferQualityEverySEs',
                                              'TQ', 'NULL')
            if res == []:
                return {'Result': None}
        except:
            gLogger.exception(
                "Exception when calling ResourceManagementClient for %s" %
                (name))
            return {'Result': 'Unknown'}

        return {'Result': float(res[0])}
Esempio n. 4
0
    def __init__(self, args=None, clients=None):

        super(SpaceTokenOccupancyCommand, self).__init__(args, clients)

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 5
0
  def setUp( self ):

    self.mockRSS = Mock()

    self.RSCli = ResourceStatusClient( serviceIn = self.mockRSS )
    self.RMCli = ResourceManagementClient( serviceIn = self.mockRSS )
    self.PilotsCli = PilotsClient()
    self.JobsCli = JobsClient()
Esempio n. 6
0
 def __init__( self, args = None, clients = None ):
   
   super( TransferQualityFromCachedPlotCommand, self ).__init__( args, clients )
   
   if 'ResourceManagementClient' in self.apis:
     self.rmClient = self.apis[ 'ResourceManagementClient' ]
   else:
     self.rmClient = ResourceManagementClient() 
Esempio n. 7
0
    def __init__(self, args=None, clients=None):

        super(CachedPlotCommand, self).__init__(args, clients)

        if "ResourceManagementClient" in self.apis:
            self.rmClient = self.apis["ResourceManagementClient"]
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 8
0
    def doCommand(self):
        """
    Returns simple pilots efficiency

    :attr:`args`:
       - args[0]: string: should be a ValidRes

       - args[1]: string should be the name of the ValidRes

    returns:
      {
        'Result': 'Good'|'Fair'|'Poor'|'Idle'|'Bad'
      }
    """
        super(PilotsEffSimpleCached_Command, self).doCommand()

        client = self.client

        if client is None:
            from DIRAC.ResourceStatusSystem.Client.ResourceStatusClient import ResourceStatusClient
            self.client = ResourceStatusClient(timeout=self.timeout)

        if self.args[0] in ('Service', 'Services'):
            try:
                name = self.client.getGeneralName(self.args[0], self.args[1],
                                                  'Site')['Value'][0]
            except:
                gLogger.error(
                    "PilotsEffSimpleCached_Command: can't get a general name for %s %s"
                    % (self.args[0], self.args[1]))
                return {'Result': 'Unknown'}
            granularity = 'Site'
        elif self.args[0] in ('Site', 'Sites'):
            name = self.args[1]
            granularity = self.args[0]
        else:
            raise InvalidRes, where(self, self.doCommand)

        try:

            if client is None:
                from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient
                self.client = ResourceManagementClient(timeout=self.timeout)
            res = self.client.getCachedResult(name,
                                              'PilotsEffSimpleEverySites',
                                              'PE_S', 'NULL')['Value']
            if res == None:
                return {'Result': 'Idle'}
            if res == []:
                return {'Result': 'Idle'}
        except:
            gLogger.exception(
                "Exception when calling ResourceManagementClient for %s %s" %
                (granularity, name))
            return {'Result': 'Unknown'}

        return {'Result': res[0]}
Esempio n. 9
0
    def __init__(self, am):
        super(SpaceTokenOccupancyTest, self).__init__(am)
        self.xmlPath = rootPath + "/" + self.getAgentOption(
            "webRoot") + self.getTestOption("dir")

        self.rmClient = ResourceManagementClient()
        mkDir(self.xmlPath)

        self.generate_xml_and_dashboard()
Esempio n. 10
0
def initializePublisherHandler( _serviceInfo ):
  '''
    Handler initialization in the usual horrible way.
  '''
  global rsClient 
  rsClient = ResourceStatusClient()
  
  global rmClient 
  rmClient = ResourceManagementClient()
  
  return S_OK()
Esempio n. 11
0
    def __init__(self, granularity, name, status_type, pdp_decision, **kw):
        ActionBase.__init__(self, granularity, name, status_type, pdp_decision,
                            **kw)

        try:
            self.rsClient = self.kw["Clients"]['ResourceStatusClient']
        except KeyError:
            self.rsClient = ResourceStatusClient()
        try:
            self.rmClient = self.kw["Clients"]['ResourceManagementClient']
        except KeyError:
            self.rmClient = ResourceManagementClient()
Esempio n. 12
0
    def __init__(self, rsClient=None, rmClient=None):

        self.GOCDBClient = GOCDBClient()
        self.rsClient = ResourceStatusClient(
        ) if rsClient == None else rsClient
        self.rmClient = ResourceManagementClient(
        ) if rmClient == None else rmClient

        self.synclist = [
            'Sites', 'Resources', 'StorageElements', 'Services',
            'RegistryUsers'
        ]
Esempio n. 13
0
    def __init__(self, args=None, clients=None):

        super(TransferCommand, self).__init__(args, clients)

        if "ReportsClient" in self.apis:
            self.rClient = self.apis["ReportsClient"]
        else:
            self.rClient = ReportsClient()

        if "ResourceManagementClient" in self.apis:
            self.rmClient = self.apis["ResourceManagementClient"]
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 14
0
    def __init__(self, args=None, clients=None):

        super(PilotsEffSimpleCachedCommand, self).__init__(args, clients)

        if 'ResourceStatusClient' in self.apis:
            self.rsClient = self.apis['ResourceStatusClient']
        else:
            self.rsClient = ResourceStatusClient()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.emClient = ResourceManagementClient()
Esempio n. 15
0
    def __init__(self, args=None, clients=None):

        super(JobCommand, self).__init__(args, clients)

        if "WMSAdministrator" in self.apis:
            self.wmsAdmin = self.apis["WMSAdministrator"]
        else:
            self.wmsAdmin = WMSAdministratorClient()

        if "ResourceManagementClient" in self.apis:
            self.rmClient = self.apis["ResourceManagementClient"]
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 16
0
    def __init__(self, args=None, clients=None):

        super(PilotCommand, self).__init__(args, clients)

        if 'WMSAdministrator' in self.apis:
            self.wmsAdmin = self.apis['WMSAdministrator']
        else:
            self.wmsAdmin = WMSAdministratorClient()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 17
0
    def __init__(self, args=None, clients=None):

        super(PilotCommand, self).__init__(args, clients)

        if "Pilots" in self.apis:
            self.pilots = self.apis["Pilots"]
        else:
            self.pilots = PilotManagerClient()

        if "ResourceManagementClient" in self.apis:
            self.rmClient = self.apis["ResourceManagementClient"]
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 18
0
    def __init__(self, args=None, clients=None):

        super(DowntimeCommand, self).__init__(args, clients)

        if 'GOCDBClient' in self.apis:
            self.gClient = self.apis['GOCDBClient']
        else:
            self.gClient = GOCDBClient()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 19
0
    def __init__(self, args=None, clients=None):

        super(JobCommand, self).__init__(args, clients)

        if 'WMSAdministrator' in self.apis:
            self.wmsAdmin = self.apis['WMSAdministrator']
        else:
            self.wmsAdmin = RPCClient('WorkloadManagement/WMSAdministrator')

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 20
0
    def __init__(self, args=None, clients=None):

        super(JobCommand, self).__init__(args, clients)

        if 'JobDB' in self.apis:
            self.jobDB = self.apis['JobDB']
        else:
            self.jobDB = JobDB()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 21
0
    def __init__(self, args=None, clients=None):

        super(PilotCommand, self).__init__(args, clients)

        if 'Pilots' in self.apis:
            self.pilots = self.apis['Pilots']
        else:
            self.pilots = PilotManagerClient()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 22
0
    def __init__(self, args=None, clients=None):

        super(GGUSTicketsCommand, self).__init__(args, clients)

        if 'GGUSTicketsClient' in self.apis:
            self.gClient = self.apis['GGUSTicketsClient']
        else:
            self.gClient = GGUSTicketsClient()

        if 'ResourceManagementClient' in self.apis:
            self.rmClient = self.apis['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 23
0
    def doCommand(self):
        """ 
    Returns transfer quality from the plot cached in the accounting cache.

    :attr:`args`: 
       - args[0]: string: should be a ValidRes
  
       - args[1]: string should be the name of the ValidRes

    :returns:
      {'Result': None | a float between 0.0 and 100.0}
    """
        super(TransferQualityFromCachedPlot_Command, self).doCommand()

        if self.client is None:
            from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient
            self.client = ResourceManagementClient(timeout=self.timeout)

        granularity = self.args[0]
        name = self.args[1]
        plotType = self.args[2]
        plotName = self.args[3]

        try:
            res = self.client.getCachedAccountingResult(
                name, plotType, plotName)

            res = res['Value']

            if res == []:
                return {'Result': None}
            res = eval(res[0])

            s = 0
            n = 0

            try:
                SE = res['data'].keys()[0]
            except IndexError:
                return {'Result': None}

            n = n + len(res['data'][SE])
            s = s + sum(res['data'][SE].values())
            meanQuality = s / n

        except:
            gLogger.exception(
                "Exception when calling ResourcePolicyClient for %s" % (name))
            return {'Result': 'Unknown'}

        return {'Result': meanQuality}
Esempio n. 24
0
  def __init__(self, args=None, clients=None):

    super(GOCDBSyncCommand, self).__init__(args, clients)

    if 'GOCDBClient' in self.apis:
      self.gClient = self.apis['GOCDBClient']
    else:
      self.gClient = GOCDBClient()

    if 'ResourceManagementClient' in self.apis:
      self.rmClient = self.apis['ResourceManagementClient']
    else:
      self.rmClient = ResourceManagementClient()

    self.seenHostnames = set()
Esempio n. 25
0
    def __init__(self,
                 name,
                 decissionParams,
                 enforcementResult,
                 singlePolicyResults,
                 clients=None):

        super(LogPolicyResultAction,
              self).__init__(name, decissionParams, enforcementResult,
                             singlePolicyResults, clients)

        if clients is not None and 'ResourceManagementClient' in clients:
            self.rmClient = clients['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()
Esempio n. 26
0
    def __init__(self, clients=None):

        if clients is None:
            clients = {}

        if 'ResourceStatusClient' in clients:
            self.rsClient = clients['ResourceStatusClient']
        else:
            self.rsClient = ResourceStatusClient()
        if 'ResourceManagementClient' in clients:
            self.rmClient = clients['ResourceManagementClient']
        else:
            self.rmClient = ResourceManagementClient()

        self.clients = clients
        self.pdp = PDP(clients)
Esempio n. 27
0
    def initialize(self):
        ''' Standard initialize.
        Uses the ProductionManager shifterProxy to modify the ResourceStatus DB
    '''

        self.maxCacheLifetime = self.am_getOption('maxCacheLifetime',
                                                  self.maxCacheLifetime)
        self.maxHistoryLifetime = self.am_getOption('maxHistoryLifetime',
                                                    self.maxHistoryLifetime)
        self.maxLogLifetime = self.am_getOption('maxLogLifetime',
                                                self.maxLogLifetime)

        self.rsClient = ResourceStatusClient()
        self.rmClient = ResourceManagementClient()

        return S_OK()
Esempio n. 28
0
  def initialize( self ):
    ''' TokenAgent initialization
        Uses the ProductionManager shifterProxy to modify the ResourceStatus DB
    '''

    self.notifyHours = self.am_getOption( 'notifyHours', self.notifyHours )
    self.adminMail   = self.am_getOption( 'adminMail', self.adminMail )


    self.rsClient = ResourceStatusClient()
    self.rmClient = ResourceManagementClient()
    self.noClient = NotificationClient()

    self.diracAdmin = DiracAdmin()

    return S_OK()
Esempio n. 29
0
  def initialize( self ):
    """ Standard initialize.
    """

    maxNumberOfThreads = self.am_getOption( 'maxNumberOfThreads', self.__maxNumberOfThreads )
    self.threadPool    = ThreadPool( maxNumberOfThreads, maxNumberOfThreads )
       
    self.elementType = self.am_getOption( 'elementType', self.elementType )   
    self.rsClient    = ResourceStatusClient()

    self.clients[ 'ResourceStatusClient' ]     = self.rsClient
    self.clients[ 'ResourceManagementClient' ] = ResourceManagementClient() 

    if not self.elementType:
      return S_ERROR( 'Missing elementType' )

    return S_OK()
Esempio n. 30
0
    def initialize(self):
        '''
    TokenAgent initialization
    '''

        # Attribute defined outside __init__
        # pylint: disable-msg=W0201

        self.notifyHours = self.am_getOption('notifyHours', 10)

        try:
            self.rsClient = ResourceStatusClient()
            self.rmClient = ResourceManagementClient()
            self.noClient = NotificationClient()

            return S_OK()
        except Exception:
            errorStr = "TokenAgent initialization"
            self.log.exception(errorStr)
            return S_ERROR(errorStr)