예제 #1
0
    def __init__(self, config):
        """
        Initialize
        """
        BaseWorkerThread.__init__(self)
        self.config = config

        self.tasksCPU = ['Processing', 'Production']
        self.tasksIO = ['Merge', 'Cleanup', 'Harvesting', 'LogCollect', 'Skim']
        self.minCPUSlots = 50
        self.minIOSlots = 25

        # get dashboard url, set metric columns from config
        self.dashboard = config.AgentStatusWatcher.dashboard
        self.siteStatusMetric = config.AgentStatusWatcher.siteStatusMetric
        self.cpuBoundMetric = config.AgentStatusWatcher.cpuBoundMetric
        self.ioBoundMetric = config.AgentStatusWatcher.ioBoundMetric
        self.ssb = Dashboard(self.dashboard)

        # set pending percentages from config
        self.pendingSlotsSitePercent = config.AgentStatusWatcher.pendingSlotsSitePercent
        self.pendingSlotsTaskPercent = config.AgentStatusWatcher.pendingSlotsTaskPercent
        self.runningExpressPercent = config.AgentStatusWatcher.runningExpressPercent
        self.runningRepackPercent = config.AgentStatusWatcher.runningRepackPercent

        # sites forced to down
        self.forceSiteDown = getattr(config.AgentStatusWatcher,
                                     'forceSiteDown', [])

        # agent team (for dynamic threshold) and queueParams (drain mode)
        self.teamName = config.Agent.teamName
        self.agentsNumByTeam = getattr(config.AgentStatusWatcher,
                                       'defaultAgentsNumByTeam', 5)

        # only SSB sites
        self.onlySSB = config.AgentStatusWatcher.onlySSB

        # tier mode
        self.tier0Mode = hasattr(config, "Tier0Feeder")
        self.t1SitesCores = config.AgentStatusWatcher.t1SitesCores

        # switch this component on/off
        self.enabled = getattr(config.AgentStatusWatcher, 'enabled', True)

        # set resource control
        self.resourceControl = ResourceControl(config=self.config)

        # wmstats connection
        self.centralCouchDBReader = WMStatsReader(
            self.config.AgentStatusWatcher.centralWMStatsURL)
예제 #2
0
 def __init__(self, config):
     '''
     Initialise the RESTModel and add some methods to it.
     '''
     RESTModel.__init__(self, config)
     
     del self.methods['POST']
     
     validator = Validator({'dbi':self.dbi})
     
     self.dashboard = Dashboard(dict = {
               'endpoint': self.config.services.dashboard,
               'cachepath': self.config.services.cachepath,
               'logger': self})
     self.samtests = SAM(dict = {
               'endpoint': self.config.services.sam,
               'cachepath': self.config.services.cachepath,
               'cert': config.services.hostcert,
               'key': config.services.hostkey,
               'logger': self})
     
     self.methods['GET'] = {'list':{'args':['name', 'scheme'],
                                     'call': self.list,
                                     'version': 2,
                                     'validation': [validator.validate_scheme, 
                                                    validator.validate_name]},
                           'status':{'args': ['name'],
                                     'call': self.status,
                                     'version': 2,
                                     'validation': [validator.validate_scheme, 
                                                    validator.validate_name]},
                           'software':{'args': ['name'],
                                     'call': self.software,
                                     'version': 2,
                                     'validation': [validator.validate_scheme, 
                                                    validator.validate_name]},
                           'resource_element':{'args':['name', 'type'],
                                     'call': self.resource_element,
                                     'version': 2,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_name,
                                                    validator.validate_resource_type]},
                           'resource_pledge':{'args':['name', 'quarter'],
                                     'call': self.resource_pledge,
                                     'version': 2,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_name,
                                                    validator.validate_quarter]},
                           'pledge_history':{'args':['name'],
                                     'call': self.pledge_history,
                                     'version': 1},
                           'contacts':{'args':['name', 'role'],
                                     'call': self.contacts,
                                     'version': 2,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_name,
                                                    validator.validate_role]},
                           'groups':{'args': ['name'],
                                     'call': self.groups,
                                     'version': 1},
                           'links':{'args': ['name'],
                                     'call': self.links,
                                     'version': 1,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_name]},
                           'associations':{'args': ['parent', 'child', 'scheme'],
                                     'call': self.associations,
                                     'version': 1,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_associations]},
                           'names':{'args':['name', 'scheme', 'limit'],
                                     'call': self.names,
                                     'version': 1,
                                     'validation': [validator.validate_scheme,
                                                    validator.validate_limit_scheme, 
                                                    validator.validate_name]}}