def __init__(self, views=None): if views is None: print('load views from database ...') views = ft.get_class_devices('PanicViewDS') views.append(ft.get_tango_host()) print('ViewChooser(%s)' % views) self.view = '' self.views = fd.dicts.SortedDict() for v in views: if ':' in v: self.views[v] = v else: desc = ft.get_device(v).Description.split('\n')[0] self.views[desc] = v Qt.QDialog.__init__(self, None) #self.setModal(True) self.setWindowTitle('PANIC View Chooser') self.setLayout(Qt.QVBoxLayout()) self.layout().addWidget(Qt.QLabel('Choose an AlarmView')) self.chooser = Qt.QComboBox() self.chooser.addItems(self.views.keys()) self.layout().addWidget(self.chooser) self.button = Qt.QPushButton('Done') self.layout().addWidget(self.button) self.button.connect(self.button, Qt.SIGNAL('pressed()'), self.done) self.button.connect(self.button, Qt.SIGNAL('pressed()'), self.close)
def get_model(self, alarm): alarm = getattr(alarm, 'tag', str(alarm)) try: if '/' not in alarm: alarm = self.get_alarm(alarm).get_model() if ':' not in alarm: alarm = ft.get_tango_host() + '/' + alarm except Exception, e: self.warning('get_model(%s): %s' % (alarm, e))
def load_from_servers_list(self,servers_list,check=True): """ Initializes the dictionary using a list of server_names like ['Exec/Instance'] """ t0 = time.time() if type(servers_list) is str: servers_list = servers_list.split(',') if check: self.check_servers_names(servers_list) for s in servers_list: try: self.log.debug('loading from %s/%s server'%(get_tango_host(self.db),s)) ss=TServer(name=s,parent=self) ss.init_from_db(self.db) self[s] = ss except Exception,e: self.log.warning('exception loading %s server: %s' % (s,str(e)[:100]+'...')) print traceback.format_exc()
def load_from_servers_list(self, servers_list, check=True): """ Initializes the dictionary using a list of server_names like ['Exec/Instance'] """ t0 = time.time() if type(servers_list) is str: servers_list = servers_list.split(',') if check: self.check_servers_names(servers_list) for s in servers_list: try: self.log.debug('loading from %s/%s server' % (get_tango_host(self.db), s)) ss = TServer(name=s, parent=self) ss.init_from_db(self.db) self[s] = ss except Exception, e: self.log.warning('exception loading %s server: %s' % (s, str(e)[:100] + '...')) print traceback.format_exc()
def get_host_starter(self, host): return self.proxies[get_tango_host(self.db) + '/tango/admin/' + host]
def get_tango_host(self): return get_tango_host(self._db)
full_servers_list.append((s_level, s_host, s_name)) self.log.info('Server added to list: %s' % [s_level, s_host, s_name]) for level, host, s_name in sorted(full_servers_list): if not host: self.log.error( 'Host has not been defined; server %s cannot be started' % s_name) continue t0 = time.time() target = self[ s_name].name #Using the True name as returned by DbGetDeviceInfo() dserver = ('dserver/' if 'dserver' not in s_name else '') + s_name dserver = (get_tango_host(self.db) + '/' if ':' not in dserver else '') + dserver self.log.info('StartingServer ' + target + ' at ' + host + ' ...') try: done = False self.get_host_starter(host).command_inout('DevStart', target) ct = int(wait / 10.) dp = self.proxies.get(dserver) while ct > 0: event.wait(10.) try: dp.state() ct = 0 done = True except:
def get_host_starter(self,host): return self.proxies[get_tango_host(self.db)+'/tango/admin/'+host]
self.log.warning('start/stop_servers(%s): Unable to retrieve host/level information: %s'%(s_name,e)) s_host = host or self[s_name].host or socket.gethostname() s_host = s_host.split('.')[0].strip() s_level = s_name in self and self[s_name].level or 0 full_servers_list.append((s_level,s_host,s_name)) self.log.info('Server added to list: %s'%[s_level,s_host,s_name]) for level,host,s_name in sorted(full_servers_list): if not host: self.log.error('Host has not been defined; server %s cannot be started'%s_name) continue t0 = time.time() target = self[s_name].name #Using the True name as returned by DbGetDeviceInfo() dserver = ('dserver/' if 'dserver' not in s_name else '')+s_name dserver = (get_tango_host(self.db)+'/' if ':' not in dserver else '')+dserver self.log.info( 'StartingServer '+target+' at '+host+' ...') try: done = False self.get_host_starter(host).command_inout('DevStart',target) ct = int(wait/10.) dp = self.proxies.get(dserver) while ct>0: event.wait(10.) try: dp.state() ct=0 done=True except: pass ct-=1
## You should have received a copy of the GNU General Public License ## along with this program; if not, see <http://www.gnu.org/licenses/>. ########################################################################### __doc__ = """ ================================= PyAlarm Device Default Properties ================================= """ import fandango as fd from fandango.functional import join, djoin, time2str, str2time from fandango.tango import PyTango, get_tango_host try: tango_host = get_tango_host().split(':')[0] except: tango_host = 'PyAlarm' #@TODO: ERROR as a positive value causes problems to Eval #(but it must be positive to appear first on lists?) #The higher the value, the higher it will appear on View lists AlarmStates = fd.Struct({ 'NORM': 0, #Normal state 'RTNUN': 1, #Active but returned to normal 'ACKED': 2, #Acknowledged by operator 'ACTIVE': 3, #UNACK alias 'UNACK': 4, #Active and unacknowledged 'ERROR': -1, #PyAlarm not working properly, exception on formula 'SHLVD': -2, #Silenced, hidden, ignored, (DEBUG), temporary state 'DSUPR':