def __init__(self, schema, host=None, user='******', passwd='browser', classes=[], LogLevel='info', load=True, logger=None): """ """ self.log = logger or Logger( 'ArchivingAPI(%s)' % schema, format='%(levelname)-8s %(asctime)s %(name)s: %(message)s') self.log.setLogLevel(LogLevel) self.log.debug('Logger streams initialized (error,warning,info,debug)') self.tango = PyTango.Database() #access to Tango database self.api = self #hook used by legacy packages self.servers = None self.schema = str(schema).lower() self.user, self.passwd = user, passwd if host is None: prop = self.tango.get_class_property('%sArchiver' % schema, ['DbHost'])['DbHost'] if not prop: print('ERROR: %sArchiver.DbHost property not defined!' % schema) self.host = None else: self.host = prop[0] #if 'TANGO_HOST' in os.environ: # self.host=os.environ['TANGO_HOST'].split(':')[0] else: self.host = host self.dbs = {} #pointers to Archiving databases self.ArchivingClasses = classes or self.get_archiving_classes() self.ArchiverClass = (k for k in self.ArchivingClasses if 'Archiver' in k).next() self.ManagerClass = (k for k in self.ArchivingClasses if 'Manager' in k).next() self.ExtractorClass = (k for k in self.ArchivingClasses if 'Extractor' in k).next() try: self.WatcherClass = (k for k in self.ArchivingClasses if 'Watcher' in k).next() except: self.WatcherClass = None self.loads = CaselessDefaultDict( lambda k: 0) #a dict with the archiving load for each device self.attributes = CaselessDict() #a dict of ArchivedAttribute objects self.dedicated = CaselessDefaultDict(lambda k: set( )) #Dictionary for keeping the attributes reserved for each archiver if load and self.host and self.ArchivingClasses: self.load_servers()
def __init__(self, pattern='', klass='', devs_list='', servers_list='', hosts='', loadAll=False, log='WARNING', logger=None, tango_host='', host='', devices=''): ''' def __init__(self,pattern='', klass='',devs_list='',servers_list=''): The ServersDict can be initialized using any of the three argument lists or a wildcard for Database.get_server_list(pattern) ServersDict('*') can be used to load all servers in database ''' self.call__init__(CaselessDict, self) if logger is None: self.log = Logger('ServersDict') self.log.setLogLevel(log) else: self.log = logger self.log.debug('ServersDict(%s)' % ','.join( map(str, (pattern, klass, devs_list, servers_list, hosts, loadAll, log, logger, tango_host)))) ## proxies will keep a list of persistent device proxies self.proxies = ProxiesDict(tango_host=tango_host) ## db will keep a persistent link to PyTango database self.db = get_database() if not tango_host else get_database( *(tango_host.split(':'))) self.server_names = self.keys self.servers = self.values if loadAll: self.load_all_servers() elif klass: self.load_by_class(klass) elif devs_list: self.load_from_devs_list(devs_list) elif devices: self.load_from_devs_list(devices) elif servers_list: self.load_from_servers_list(servers_list) #elif pattern: self.load_from_servers_list(self.db.get_server_list(pattern)) elif hosts: hosts = type(hosts) is str and (',' in hosts and hosts.split(',') or [hosts]) or hosts for h in hosts: self.load_by_host(h) elif host: self.load_by_host(host) elif pattern: self.load_by_name(pattern)
def __init__(self, name='', host='', parent=None): if not name or '/' not in name: raise Exception, 'TServer_WrongServerName_%s' % name self.info = None self.name = self.get_simple_name(name) self.update_level(host, 0) self.controlled = False self.level = 0 self._classes = None self.state = None #PyTango.DevState.UNKNOWN self.log = Logger('TServer-%s' % name) if parent and parent.log.getLogLevel(): self.log.setLogLevel(parent.log.getLogLevel()) else: self.log.setLogLevel('ERROR') self.state_lock = threading.Lock() if parent: self.proxies = parent.proxies else: self.proxies = ProxiesDict() pass
def __init__(self,use_tau = False, tango_host = ''): self.log = Logger('ProxiesDict') self.log.setLogLevel('INFO') self.use_tau = TAU and use_tau self.tango_host = tango_host self.call__init__(CaselessDefaultDict,self.__default_factory__)