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)
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]}}