def activateResources(self, addition, deltaID): """ Resources activation """ # Check if file present. If So, set failed and remove file! newvlanFile = self.workDir + "/%s.json" % deltaID addition['uid'] = deltaID if os.path.isfile(newvlanFile): if not self.noRules: self.logger.info( "Removing virtual interface rules file. Add it again by call from FE" ) self.vInterface.stop(addition['hosts'][self.hostname]) self.vInterface.remove(addition['hosts'][self.hostname]) os.unlink(newvlanFile) # return True, "This delta was already on the system. Cancel it." if self.hostname not in addition['hosts'].keys(): return False, "Failed to find own hostname in dictionary" addition = self.vlanCheck(addition) self.logger.info("Saving file %s", deltaID) agentdb = contentDB(logger=self.logger, config=self.config) agentdb.dumpFileContentAsJson(newvlanFile, addition) if not self.noRules: self.logger.info("Applying virtual interface rules") self.vInterface.add(addition['hosts'][self.hostname]) self.vInterface.setup(addition['hosts'][self.hostname]) self.vInterface.start(addition['hosts'][self.hostname]) else: self.logger.info( "Agent is not configured to create interfaces. Continue") return True, ""
def __init__(self, config, logger, sitename): self.sitename = sitename self.logger = logger self.config = config self.siteDB = contentDB(logger=self.logger, config=self.config) self.dbI = getDBConn('PolicyService') self.stateMachine = StateMachine(self.logger)
def __init__(self, logger, config=None): self.dbI = getDBConn() self.config = getConfig(["/etc/dtnrm-site-fe.conf"]) if config: self.config = config self.logger = logger self.policer = polS.PolicyService(self.config, self.logger) self.stateM = stateM.StateMachine(self.logger) self.siteDB = contentDB(logger=self.logger, config=self.config)
def __init__(self, configIn, loggerIn, args=None): self.config, self.logger = getDefaultConfigAgent(COMPONENT, configIn, loggerIn) self.workDir = self.config.get('general', 'private_dir') + "/DTNRM/NetTester/jsons/" self.fdtworker = FDTWorker(self.config, self.logger) self.senseclient = self.config.get('general', 'sense_client') self.customInput = args createDirs(self.workDir) self.IPs = [] self.vlanConfDir = self.config.get('general', 'private_dir') + "/DTNRM/RulerAgent/" self.logger.info("==== NetTester Start Work.") self.agentdb = contentDB(logger=self.logger, config=self.config)
def __init__(self, config, logger): self.config, self.logger = getDefaultConfigAgent( COMPONENT, config, logger) self.workDir = self.config.get('general', 'private_dir') + "/DTNRM/QOS/" self.configDir = self.config.get('general', 'private_dir') + "/DTNRM/RulerAgent/" self.hostname = self.config.get('agent', 'hostname') createDirs(self.workDir) self.debug = self.config.getboolean('general', "debug") self.agentdb = contentDB(logger=self.logger, config=self.config)
def __init__(self, logger, config=None): self.dbI = getDBConn('REST-DELTA') self.config = getConfig() if config: self.config = config self.logger = logger self.policer = {} for sitename in self.config.get('general', 'sites').split(','): policer = polS.PolicyService(config, logger, sitename) self.policer[sitename] = policer self.stateM = stateM.StateMachine(self.logger) self.siteDB = contentDB(logger=self.logger, config=self.config)
def __init__(self, config, logger): self.config = config if config else getConfig() self.logger = logger if logger else getLogger( "%s/%s/" % (self.config.get('general', 'logDir'), COMPONENT), self.config.get('general', 'logLevel')) self.workDir = self.config.get('general', 'private_dir') + "/DTNRM/QOS/" self.configDir = self.config.get('general', 'private_dir') + "/DTNRM/RulerAgent/" self.hostname = self.config.get('agent', 'hostname') createDirs(self.workDir) self.debug = self.config.getboolean('general', "debug") self.agentdb = contentDB(logger=self.logger, config=self.config)
def __init__(self, config, logger): self.config, self.logger = getDefaultConfigAgent(COMPONENT, config, logger) self.workDir = self.config.get('general', 'private_dir') + "/DTNRM/RulerAgent/" createDirs(self.workDir) self.fullURL = getFullUrl(self.config, self.config.get('general', 'siteName')) self.noRules = False if self.config.has_option('agent', 'norules'): self.noRules = self.config.getboolean('agent', 'norules') self.hostname = self.config.get('agent', 'hostname') self.logger.info("====== Ruler Start Work. Hostname: %s", self.hostname) self.debug = self.config.getboolean('general', "debug") self.pretty = pprint.PrettyPrinter(indent=4) self.agentdb = contentDB(logger=self.logger, config=self.config) self.vInterface = VInterfaces(self.config, self.logger) self.qosruler = QOS(self.config, self.logger)
def getdeltaAll(sitename, deltaUID): """ Get all deltas for specific Site. INPUT: sitename - str mandatory deltaUID - str mandatory""" siteDB = contentDB(logger=LOGGER, config=CONFIG) policer = polS.PolicyService(CONFIG, LOGGER) delta, dbObj = getdeltainfo(sitename, deltaUID) tmpFile = tempfile.NamedTemporaryFile(delete=False) tmpFile.close() outContent = {"ID": delta['uid'], "InsertTime": delta['insertdate'], "UpdateTime": delta['updatedate'], "Content": ast.literal_eval(str(delta['content'])), "State": "accepting", "modelId": delta['modelid']} siteDB.saveContent(tmpFile.name, outContent) policer.acceptDelta(tmpFile.name, sitename) delta, dbObj = getdeltainfo(sitename, deltaUID) STATEMACHINE._stateChangerDelta(dbObj, 'activating', **delta)
def startWork(config=None, logger=None): """ Execute main script for DTN-RM Agent output preparation """ workDir = config.get('general', 'private_dir') + "/DTNRM/" createDirs(workDir) dic = prepareJsonOut(config, logger) fullUrl = getFullUrl(config) dic = appendConfig(config, dic) if config.getboolean('general', "debug"): pretty = pprint.PrettyPrinter(indent=4) logger.debug(pretty.pformat(dic)) agent = contentDB(logger=logger, config=config) agent.dumpFileContentAsJson(workDir + "/latest-out.json", dic) logger.info('Will try to publish information to SiteFE') fullUrl += '/sitefe' outVals = publishToSiteFE(dic, fullUrl, '/json/frontend/updatehost') if outVals[2] != 'OK' or outVals[1] != 200: if outVals[3]: publishToSiteFE(dic, fullUrl, '/json/frontend/addhost')
def __init__(self): self.dbI = getDBConn('REST-Frontend') self.initialized = False self.config = getConfig() self.siteDB = contentDB()
def execute(configIn=None, loggerIn=None): """ Execute main script for DTN-RM Agent output preparation """ config, logger = getDefaultConfigAgent(COMPONENT, configIn, loggerIn) if not config.getboolean(COMPONENT, 'enabled'): logger.info('Component is not enabled in configuration.') return success, outConfig = getNetdataConfig() if not success: logger.warning('Failure receiving netdata configuration file. Exiting') exit(1) workDir = config.get('agent', 'PRIVATE_DIR') + "/DTNRM/" agentDB = contentDB(logger=logger, config=config) # TODO Implement enabled option and debug per each component. # if not config.getboolean(COMPONENT, 'enabled'): # return # http://vocms025.cern.ch:19999/api/v1/alarms?active&_=1508422746160 agents = makeGETRequest("http://localhost:19999/api/v1/alarms?active") out = { 'netdata.warnings': 0, 'netdata.critical': 0, 'sense.nodes': 1, 'sense.vlansInUse': 0, 'sense.vlansFree': 0, 'sense.vlansTotal': 0, 'sense.agentError': 0, 'sense.agentWarning': 0, 'sense.agent.recurringactions.status': 0, 'sense.agent.recurringactions.runtime': 0, 'sense.agent.ruler.status': 0, 'sense.agent.ruler.runtime': 0 } for _dKey, dVals in agents[1]['alarms'].items(): if dVals['status'] == 'WARNING': out['netdata.warnings'] += 1 elif dVals['status'] == 'CRITICAL': out['netdata.critical'] += 1 agentOut = agentDB.getFileContentAsJson(workDir + "/latest-out.json") for _interf, interfDict in agentOut['NetInfo'].items(): if 'vlan_range' in interfDict: lowR, highR = interfDict['vlan_range'].split(',') total = int(highR) - int(lowR) if total < 0: # TODO print error out['sense.agentError'] += 1 else: out['sense.vlansTotal'] += total out['sense.vlansInUse'] = len(interfDict['vlans']) free = out['sense.vlansTotal'] - out['sense.vlansInUse'] if free < 0: # TODO: print error out['sense.agentError'] += 1 else: out['sense.vlansFree'] = free if 'destination' in outConfig: splVal = outConfig['destination'].split(':') if len(splVal) == 3: destHostname = splVal[1] destPort = splVal[2] elif len(splVal) == 2: destHostname = splVal[0] destPort = splVal[1] else: print 'FAILURE. Was expecting protocol:ip:port or ip:port... Got Value: %s' % outConfig[ 'destination'] return else: print 'FAILURE. Backend is not configured' return metrics = potsdb.Client(destHostname, port=destPort, qsize=1000, host_tag=True, mps=100, check_host=True) for key, value in out.items(): metrics.send("monit.%s" % key, value, **outConfig['tags']) # waits for all outstanding metrics to be sent and background thread closes metrics.wait()
def __init__(self, config, logger, args): self.logger = logger self.config = config self.args = args self.siteDB = contentDB(logger=self.logger, config=self.config) self.sitename = None
def __init__(self): self.dbI = getDBConn() self.initialized = False self.config = getConfig(["/etc/dtnrm-site-fe.conf"]) self.siteDB = contentDB()
def __init__(self, config, logger, sitename): self.logger = logger self.config = config self.siteDB = contentDB(logger=self.logger, config=self.config) self.sitename = sitename
def __init__(self, config, logger): self.logger = logger self.config = config self.siteDB = contentDB(logger=self.logger, config=self.config) self.dbI = getDBConn() self.stateMachine = StateMachine(self.logger)