Пример #1
0
    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)
Пример #2
0
 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