Ejemplo n.º 1
0
 def delete_device(self):
     SardanaDevice.delete_device(self)
     self._macro_server.clear_log_report()
     # Workaround for bug #494.
     factory = taurus.Factory("tango")
     for attr in factory.tango_attrs.values():
         attr.cleanUp()
Ejemplo n.º 2
0
 def delete_device(self):
     SardanaDevice.delete_device(self)
     self._macro_server.clear_log_report()
     # Workaround for bug #494.
     factory = taurus.Factory("tango")
     for attr in factory.tango_attrs.values():
         attr.cleanUp()
Ejemplo n.º 3
0
    def init_device(self):
        SardanaDevice.init_device(self)
        self.set_change_event('State', True, False)
        self.set_change_event('Status', True, False)
        self.set_change_event('TypeList', True, False)
        self.set_change_event('DoorList', True, False)
        self.set_change_event('MacroList', True, False)
        self.set_change_event('MacroLibList', True, False)
        self.set_change_event('Elements', True, False)
        self.set_change_event('Environment', True, False)

        dev_class = self.get_device_class()
        self.get_device_properties(dev_class)

        self.EnvironmentDb = self._calculate_name(self.EnvironmentDb)
        self.LogReportFilename = self._calculate_name(self.LogReportFilename)

        macro_server = self.macro_server
        macro_server.set_python_path(self.PythonPath)
        macro_server.set_max_parallel_macros(self.MaxParallelMacros)

        # if it is not possible to store/retrieve the environment from the
        # current path then setup a new unique path and store the environment
        # there forever
        try:
            macro_server.set_environment_db(self.EnvironmentDb)
        except:
            self.error("Failed to set environment DB to %s",
                       self.EnvironmentDb)
            self.debug("Details:", exc_info=1)
            import tempfile
            env_db = os.path.join(tempfile.mkdtemp(),
                                  MacroServerClass.DefaultEnvRelDir)
            env_db = self._calculate_name(env_db)
            db = Util.instance().get_database()
            db.put_device_property(self.get_name(), dict(EnvironmentDb=env_db))
            self.EnvironmentDb = env_db
            macro_server.set_environment_db(self.EnvironmentDb)

        try:
            macro_server.set_log_report(
                self.LogReportFilename, self.LogReportFormat)
        except:
            self.error("Failed to setup log report to %s",
                       self.LogReportFilename)
            self.debug("Details:", exc_info=1)

        macro_server.set_recorder_path(self.RecorderPath)
        macro_server.set_macro_path(self.MacroPath)
        macro_server.set_pool_names(self.PoolNames)

        if self.RConsolePort:
            try:
                import rfoo.utils.rconsole
                rfoo.utils.rconsole.spawn_server(port=self.RConsolePort)
            except Exception:
                self.warning("Failed to start rconsole")
                self.debug("Details:", exc_info=1)
        self.set_state(DevState.ON)
Ejemplo n.º 4
0
    def init_device(self):
        SardanaDevice.init_device(self)
        self.set_change_event('State', True, False)
        self.set_change_event('Status', True, False)
        self.set_change_event('TypeList', True, False)
        self.set_change_event('DoorList', True, False)
        self.set_change_event('MacroList', True, False)
        self.set_change_event('MacroLibList', True, False)
        self.set_change_event('Elements', True, False)
        self.set_change_event('Environment', True, False)

        dev_class = self.get_device_class()
        self.get_device_properties(dev_class)

        self.EnvironmentDb = self._calculate_name(self.EnvironmentDb)
        self.LogReportFilename = self._calculate_name(self.LogReportFilename)

        macro_server = self.macro_server
        macro_server.set_python_path(self.PythonPath)
        macro_server.set_max_parallel_macros(self.MaxParallelMacros)

        # if it is not possible to store/retrieve the environment from the
        # current path then setup a new unique path and store the environment
        # there forever
        try:
            macro_server.set_environment_db(self.EnvironmentDb)
        except:
            self.error("Failed to set environment DB to %s",
                       self.EnvironmentDb)
            self.debug("Details:", exc_info=1)
            import tempfile
            env_db = os.path.join(tempfile.mkdtemp(),
                                  MacroServerClass.DefaultEnvRelDir)
            env_db = self._calculate_name(env_db)
            db = Util.instance().get_database()
            db.put_device_property(self.get_name(), dict(EnvironmentDb=env_db))
            self.EnvironmentDb = env_db
            macro_server.set_environment_db(self.EnvironmentDb)

        try:
            macro_server.set_log_report(self.LogReportFilename,
                                        self.LogReportFormat)
        except:
            self.error("Failed to setup log report to %s",
                       self.LogReportFilename)
            self.debug("Details:", exc_info=1)

        macro_server.set_recorder_path(self.RecorderPath)
        macro_server.set_macro_path(self.MacroPath)
        macro_server.set_pool_names(self.PoolNames)

        if self.RConsolePort:
            try:
                import rfoo.utils.rconsole
                rfoo.utils.rconsole.spawn_server(port=self.RConsolePort)
            except Exception:
                self.warning("Failed to start rconsole")
                self.debug("Details:", exc_info=1)
        self.set_state(DevState.ON)
Ejemplo n.º 5
0
    def init(self, name):
        SardanaDevice.init(self, name)

        if self._alias is None:
            self._alias = Util.instance().get_ds_inst_name()

        self._macro_server = ms = MS(self.get_full_name(), self.alias)
        ms.add_listener(self.on_macro_server_changed)
Ejemplo n.º 6
0
    def init(self, name):
        SardanaDevice.init(self, name)

        if self._alias is None:
            self._alias = Util.instance().get_ds_inst_name()

        self._macro_server = ms = MS(self.get_full_name(), self.alias)
        ms.add_listener(self.on_macro_server_changed)
Ejemplo n.º 7
0
 def init(self, name):
     """initialize the device once in the object lifetime. Override when
     necessary but **always** call the method from your super class
     
     :param str name: device name"""
     SardanaDevice.init(self, name)
     util = Util.instance()
     self._pool_device = util.get_device_list_by_class("Pool")[0]
     self._element = None
Ejemplo n.º 8
0
 def init(self, name):
     """initialize the device once in the object lifetime. Override when
     necessary but **always** call the method from your super class
     
     :param str name: device name"""
     SardanaDevice.init(self, name)
     util = Util.instance()
     self._pool_device = util.get_device_list_by_class("Pool")[0]
     self._element = None
Ejemplo n.º 9
0
    def init_device(self):
        SardanaDevice.init_device(self)
        levels = 'Critical', 'Error', 'Warning', 'Info', 'Output', 'Debug'
        detect_evts = ()
        non_detect_evts = [
            'State', 'Status', 'Result', 'RecordData', 'MacroStatus', 'Input'
        ] + list(levels)
        self.set_change_events(detect_evts, non_detect_evts)

        util = Util.instance()
        db = util.get_database()

        # Find the macro server for this door
        macro_servers = util.get_device_list_by_class("MacroServer")
        if self.MacroServerName is None:
            self._macro_server_device = macro_servers[0]
        else:
            ms_name = self.MacroServerName.lower()
            for ms in macro_servers:
                if ms.get_name().lower() == ms_name or \
                   ms.alias.lower() == ms_name:
                    self._macro_server_device = ms
                    break

        # support for old doors which didn't have ID
        if self.Id == InvalidId:
            self.Id = self.macro_server_device.macro_server.get_new_id()
            db.put_device_property(self.get_name(), dict(Id=self.Id))

        door = self.door
        if door is None:
            full_name = self.get_name()
            name = full_name
            macro_server = self.macro_server_device.macro_server
            self.door = door = \
                macro_server.create_element(type="Door", name=name,
                                            full_name=full_name, id=self.Id)
            self._setupLogHandlers(levels)

        multi_attr = self.get_device_attr()

        input_attr = multi_attr.get_attr_by_name('Input')
        self._input_handler = ih = TangoInputHandler(self, input_attr)
        door.set_input_handler(ih)

        recorddata_attr = multi_attr.get_attr_by_name('RecordData')
        self._pylab_handler = pylabh = TangoPylabHandler(self, recorddata_attr)
        door.set_pylab_handler(pylabh)

        self._pyplot_handler = pyploth = TangoPyplotHandler(
            self, recorddata_attr)
        door.set_pyplot_handler(pyploth)

        door.add_listener(self.on_door_changed)
        self.set_state(DevState.ON)
Ejemplo n.º 10
0
    def init_device(self):
        SardanaDevice.init_device(self)
        levels = 'Critical', 'Error', 'Warning', 'Info', 'Output', 'Debug'
        detect_evts = ()
        non_detect_evts = ['State', 'Status', 'Result', 'RecordData',
                           'MacroStatus', 'Input'] + list(levels)
        self.set_change_events(detect_evts, non_detect_evts)

        util = Util.instance()
        db = util.get_database()

        # Find the macro server for this door
        macro_servers = util.get_device_list_by_class("MacroServer")
        if self.MacroServerName is None:
            self._macro_server_device = macro_servers[0]
        else:
            ms_name = self.MacroServerName.lower()
            for ms in macro_servers:
                if ms.get_name().lower() == ms_name or \
                   ms.alias.lower() == ms_name:
                    self._macro_server_device = ms
                    break

        # support for old doors which didn't have ID
        if self.Id == InvalidId:
            self.Id = self.macro_server_device.macro_server.get_new_id()
            db.put_device_property(self.get_name(), dict(Id=self.Id))

        door = self.door
        if door is None:
            full_name = self.get_name()
            name = full_name
            macro_server = self.macro_server_device.macro_server
            self.door = door = \
                macro_server.create_element(type="Door", name=name,
                                            full_name=full_name, id=self.Id)
            self._setupLogHandlers(levels)

        multi_attr = self.get_device_attr()

        input_attr = multi_attr.get_attr_by_name('Input')
        self._input_handler = ih = TangoInputHandler(self, input_attr)
        door.set_input_handler(ih)

        recorddata_attr = multi_attr.get_attr_by_name('RecordData')
        self._pylab_handler = pylabh = TangoPylabHandler(self, recorddata_attr)
        door.set_pylab_handler(pylabh)

        self._pyplot_handler = pyploth = TangoPyplotHandler(
            self, recorddata_attr)
        door.set_pyplot_handler(pyploth)

        door.add_listener(self.on_door_changed)
        self.set_state(DevState.ON)
Ejemplo n.º 11
0
 def dev_status(self):
     self._status = SardanaDevice.dev_status(self)
     self._status += '\n Macro stack ([state] macro):'
     macro = self.getRunningMacro()
     mstack = ''
     while macro is not None:
         mstate = macro.getMacroStatus()['state']
         mstack = '\n    -[%s]\t%s' % (mstate, macro.getCommand()) + mstack
         macro = macro.getParentMacro()
     self._status += mstack
     return self._status
Ejemplo n.º 12
0
 def dev_status(self):
     self._status = SardanaDevice.dev_status(self)
     self._status += '\n Macro stack ([state] macro):'
     macro = self.getRunningMacro()
     mstack = ''
     while macro is not None:
         mstate = macro.getMacroStatus()['state']
         mstack = '\n    -[%s]\t%s' % (mstate, macro.getCommand()) + mstack
         macro = macro.getParentMacro()
     self._status += mstack
     return self._status
Ejemplo n.º 13
0
 def delete_device(self):
     """Clean the device. Called during shutdown and every time the tango
     ``Init`` command is executed.
     Override when necessary but **always** call the method from your super
     class"""
     SardanaDevice.delete_device(self)
Ejemplo n.º 14
0
 def __init__(self, cl, name):
     self._macro_server = None
     SardanaDevice.__init__(self, cl, name)
Ejemplo n.º 15
0
 def delete_device(self):
     SardanaDevice.delete_device(self)
     self.clear_log_report()
Ejemplo n.º 16
0
 def __init__(self, dclass, name):
     SardanaDevice.__init__(self, dclass, name)
     self._last_result = ()
     self._input_handler = None
Ejemplo n.º 17
0
 def __init__(self, cl, name):
     self._macro_server = None
     SardanaDevice.__init__(self, cl, name)
Ejemplo n.º 18
0
 def init(self, name):
     SardanaDevice.init(self, name)
     self._door = None
     self._macro_server_device = None
Ejemplo n.º 19
0
 def __init__(self, dclass, name):
     SardanaDevice.__init__(self, dclass, name)
     self._last_result = ()
     self._input_handler = None
Ejemplo n.º 20
0
 def __init__(self, dclass, name):
     """Constructor"""
     SardanaDevice.__init__(self, dclass, name)
Ejemplo n.º 21
0
 def init_device(self):
     """Initialize the device. Called during startup after :meth:`init` and
     every time the tango ``Init`` command is executed.
     Override when necessary but **always** call the method from your super
     class"""
     SardanaDevice.init_device(self)
Ejemplo n.º 22
0
 def delete_device(self):
     """Clean the device. Called during shutdown and every time the tango
     ``Init`` command is executed.
     Override when necessary but **always** call the method from your super
     class"""
     SardanaDevice.delete_device(self)
Ejemplo n.º 23
0
 def init_device(self):
     """Initialize the device. Called during startup after :meth:`init` and
     every time the tango ``Init`` command is executed.
     Override when necessary but **always** call the method from your super
     class"""
     SardanaDevice.init_device(self)
Ejemplo n.º 24
0
 def init(self, name):
     SardanaDevice.init(self, name)
     self._door = None
     self._macro_server_device = None
Ejemplo n.º 25
0
 def __init__(self, dclass, name):
     """Constructor"""
     SardanaDevice.__init__(self, dclass, name)
Ejemplo n.º 26
0
 def delete_device(self):
     SardanaDevice.delete_device(self)
     self.clear_log_report()