def __initializeTables(self):
        '''Read the topology from ZIMon and (re-)construct
        the tables for metrics, keys, key elements (tag keys)
        and key values (tag values)'''

        self.__qh = QueryHandler(self.server, self.port, self.logger,
                                 self.apiKeyName, self.apiKeyValue)
        self.__sensorsConf = SensorConfig.readSensorsConfigFromMMSDRFS(
            self.logger)
        tstart = timer()
        self.__metaData = Topo(self.qh.getTopology())
        tend = timer()
        if not (self.metaData and self.metaData.topo):
            raise ValueError(MSG['NoData'])
        foundItems = len(self.metaData.allParents) - 1
        sensors = self.metaData.sensorsSpec.keys()
        self.logger.info(MSG['MetaSuccess'])
        self.logger.details(MSG['ReceivAttrValues'].format(
            'parents totally', foundItems))
        self.logger.debug(MSG['ReceivAttrValues'].format(
            'parents', ", ".join(self.metaData.allParents)))
        self.logger.info(MSG['ReceivAttrValues'].format(
            'sensors', ", ".join(sensors)))
        self.logger.details(MSG['TimerInfo'].format('Metadata',
                                                    str(tend - tstart)))
Пример #2
0
    def __initializeTables(self):
        '''Read the topology from ZIMon and (re-)construct
        the tables for metrics, keys, key elements (tag keys)
        and key values (tag values)'''

        self.__qh = QueryHandler(self.server, self.port, self.logger, self.apiKeyName, self.apiKeyValue)
        self.__sensorsConf = SensorConfig.readSensorsConfigFromMMSDRFS(self.logger)
        MAX_ATTEMPTS_COUNT = 3
        for attempt in range(1, MAX_ATTEMPTS_COUNT + 1):
            tstart = timer()
            self.__metaData = Topo(self.qh.getTopology())
            tend = timer()
            if not (self.metaData and self.metaData.topo):
                if attempt > MAX_ATTEMPTS_COUNT:
                    break
                # if no data returned because of the REST HTTP server is still starting, sleep and retry (max 3 times)
                self.logger.warning(MSG['NoDataStartNextAttempt'].format(attempt, MAX_ATTEMPTS_COUNT))
                sleep(self.sleepTime)
            else:
                foundItems = len(self.metaData.allParents) - 1
                sensors = self.metaData.sensorsSpec.keys()
                self.logger.info(MSG['MetaSuccess'])
                self.logger.details(MSG['ReceivAttrValues'].format('parents totally', foundItems))
                self.logger.debug(MSG['ReceivAttrValues'].format('parents', ", ".join(self.metaData.allParents)))
                self.logger.info(MSG['ReceivAttrValues'].format('sensors', ", ".join(sensors)))
                self.logger.details(MSG['TimerInfo'].format('Metadata', str(tend - tstart)))
                return
        raise ValueError(MSG['NoData'])
def validateCollectorConf(args, logger):

    if not (args.server == 'localhost') and not (args.server == '127.0.0.1'):
        try:
            s = socket.socket()
            s.connect((args.server, args.serverPort))
        finally:
            s.close()
    else:
        #get queryport
        foundPorts = SensorConfig.getCollectorPorts(logger)
        if foundPorts and str(args.serverPort) not in foundPorts:
            raise Exception("Invalid serverPort specified. Try with: %s" %
                            str(foundPorts))
        elif foundPorts[1] and not (args.serverPort == int(foundPorts[1])):
            args.serverPort = int(foundPorts[1])
            logger.info(MSG['Query2port'].format(args.serverPort))
 def SensorsConfig(self):
     if not self.__sensorsConf or len(self.__sensorsConf) == 0:
         self.__sensorsConf = SensorConfig.readSensorsConfigFromMMSDRFS(
             self.logger)
     return self.__sensorsConf