Beispiel #1
0
 def get_host_list(self, host_name):
     cache = settings.get_cache()
     host_list = [
         settings.HashSetting(key_name).get('host')
         for key_name in cache.keys('tango.info.*')
     ]
     return _filter(host_name, host_list)
Beispiel #2
0
 def get_csdb_server_list(self):
     cache = settings.get_cache()
     exported_devices = cache.keys('tango.info.sys/database*')
     result = []
     for key_name in exported_devices:
         info = settings.HashSetting(key_name)
         result.append(info.get('IOR'))
     return result
Beispiel #3
0
 def copy_from_state(self, name):
     """
     this will copy the configuration into the current
     """
     tmp_hash = settings.HashSetting('%s:%s' % (self.name, name))
     self._counters_settings.clear()
     for k, v in tmp_hash.iteritems():
         self._counters_settings[k] = v
Beispiel #4
0
 def get_settings(self, json_value):
     data = json.loads(json_value)
     result = {}
     if isinstance(data, dict):
         data = data.values()
     elif isinstance(data, (str, unicode)):
         data = data,
     for element in data:
         if element:
             setting = settings.HashSetting(element)
             result[element] = setting.get_all()
     return json.dumps(result)
Beispiel #5
0
    def initialize(self, *args, **kws):
        hash_name = 'controller.id31diffract'
        ctrl_name = self.config.get('name', default=None)
        if ctrl_name:
            hash_name += '.%s' % ctrl_name
        self.par_settings = settings.HashSetting(hash_name)
        if not len(self.par_settings):
            for name, (typ, default) in self.CtrlPars.items():
                self.par_settings[name] = default

        self.has_extra = dict([(mot, False) for mot in self.ParamMotors])

        super(ID31Diffract, self).initialize(*args, **kws)
Beispiel #6
0
 def get_host_server_list(self, host_name):
     result = []
     wildcard = host_name.replace('*','.*')
     m = re.compile(wildcard)
     cache = settings.get_cache()
     for key_name in cache.keys('tango.info.*'):
         host = settings.HashSetting(key_name).get('host')
         if not m.match(host): continue
         dev_name = key_name.replace('tango.info.','')
         dev_node = self._tango_name_2_node.get(dev_name)
         if dev_node is None: continue
         server_node = dev_node.parent
         result.append('%s/%s' % (server_node.get('server',''),server_node.get('personal_name')))
     return result
Beispiel #7
0
    def set(self, axis, setting_name, value):
        '''
        * set setting (if updated)
        * send event
        * write
        '''
        old_value = get_axis_setting(axis, setting_name)
        if value == old_value:
            return

        convert_func = self.convert_funcs.get(setting_name)
        if convert_func is not None:
            value = convert_func(value)

        if setting_name not in ('state', 'position'):
            settings.HashSetting("axis.%s" % axis.name)[setting_name] = value
        axis._beacon_channels[setting_name].value = value
        event.send(axis, 'internal_' + setting_name, value)
Beispiel #8
0
def get_axis_setting(axis, setting_name):
    hash_setting = settings.HashSetting("axis.%s" % axis.name)
    if len(hash_setting) == 0:
        # there is no setting value in cache
        setting_value = get_from_config(axis, setting_name)
        if setting_value is not None:
            # write setting to cache
            hash_setting[setting_name] = setting_value
    else:
        setting_value = hash_setting.get(setting_name)
        if setting_value is None:
            # take setting value from config
            setting_value = get_from_config(axis, setting_name)
            if setting_value is not None:
                # write setting to cache
                hash_setting[setting_name] = setting_value

    try:
        beacon_channels = axis._beacon_channels
    except AttributeError:
        beacon_channels = dict()
        axis._beacon_channels = beacon_channels

    try:
        chan = beacon_channels[setting_name]
    except KeyError:
        chan_name = "axis.%s.%s" % (axis.name, setting_name)
        cb = functools.partial(setting_update_from_channel,
                               setting_name=setting_name,
                               axis=axis)
        if setting_value is None:
            chan = channels.Channel(chan_name, callback=cb)
        else:
            chan = channels.Channel(chan_name,
                                    default_value=setting_value,
                                    callback=cb)
        chan._setting_update_cb = cb
        beacon_channels[setting_name] = chan
    else:
        if setting_value is None:
            setting_value = chan.value

    return setting_value
Beispiel #9
0
    def __init__(self, name, config_tree):
        """MeasurementGroup is a helper to activate detectors
        for counting procedure.

        name -- the measurement name
        config_tree -- measurement configuration.
        in this dictionary we need to have:
        counters -- a name list of available counters
        default -- if True set as default measurement
        """
        counters_list = config_tree.get('counters')
        if counters_list is None:
            raise ValueError("MeasurementGroup: should have a counters list")
        self.name = name
        self._available_counters = list(counters_list)
        self._current_config = settings.SimpleSetting('%s' % name,
                                                      default_value='default')
        # disabled counters
        self._counters_settings = settings.HashSetting(
            '%s:%s' % (name, self._current_config.get()))
Beispiel #10
0
 def _get_export_device_info(self,dev_name):
     key_name = 'tango.info.%s' % dev_name
     return settings.HashSetting(key_name)
Beispiel #11
0
 def switch_state(self, name):
     self._current_config.set(name)
     self._counters_settings = settings.HashSetting('%s:%s' %
                                                    (self.name, name))
Beispiel #12
0
 def set_settings(self, json_value):
     data = json.loads(json_value)
     for key, value in data.items():
         setting = settings.HashSetting(key)
         setting.set(value)