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()
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)
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])}
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()
def setUp( self ): self.mockRSS = Mock() self.RSCli = ResourceStatusClient( serviceIn = self.mockRSS ) self.RMCli = ResourceManagementClient( serviceIn = self.mockRSS ) self.PilotsCli = PilotsClient() self.JobsCli = JobsClient()
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()
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()
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]}
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()
def initializePublisherHandler( _serviceInfo ): ''' Handler initialization in the usual horrible way. ''' global rsClient rsClient = ResourceStatusClient() global rmClient rmClient = ResourceManagementClient() return S_OK()
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()
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' ]
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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}
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()
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()
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)
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()
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()
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()
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)