示例#1
0
文件: beacon.py 项目: wkitka/pytango
 def __init__(self, personal_name = "",**keys):
     self._config = static.Config('',3.)
     self._logger = logging.getLogger(self.__class__.__name__)
     self._debug = self._logger.debug
     self._info = self._logger.info
     self._warn = self._logger.warn
     self._error = self._logger.error
     self._critical = self._logger.critical
     
     self._index()
     
     #Trick to start
     self._beacon_dserver_node = static.Node(self._config)
     self._beacon_dserver_node['server'] = 'DataBaseds'
     self._beacon_dserver_node['personal_name'] = personal_name
     tango_name =  'sys/database/%s' % personal_name
     databse_device_node = static.Node(self._config,self._beacon_dserver_node)
     databse_device_node['class'] = 'DataBase'
     databse_device_node['tango_name'] = tango_name
     self._beacon_dserver_node['device'] = [databse_device_node]
     self._beacon_dserver_node['tango_name'] = tango_name
     self._tango_name_2_node[tango_name] = databse_device_node
     tango_name =  'dserver/databaseds/%s' % personal_name
     self._tango_name_2_node[tango_name] = self._beacon_dserver_node
     server_name = 'DataBaseds/%s' % personal_name
     self._personal_2_node[server_name] = self._beacon_dserver_node
示例#2
0
文件: beacon.py 项目: wkitka/pytango
    def add_device(self, server_name, dev_info, klass_name, alias=None):
        self._info("add_device(server_name=%s, dev_info=%s, klass_name=%s, alias=%s)",
                   server_name, dev_info, klass_name, alias)
        tango_name, _ = dev_info
        tango_name = tango_name.lower()
        device_node = self._tango_name_2_node.get(tango_name)
        if device_node is not None:    # There is a problem?
            return
        server_exe_name,personal_name = server_name.split('/')
        personal_name = personal_name.lower()
        server_name = '%s/%s' % (server_exe_name,personal_name)
        server_node = self._personal_2_node.get(server_name)
        if server_node is None:
            server_node = static.Node(self._config,filename = 'tango/%s.yml' % server_name.replace('/','_'))
            server_node['server'] = server_exe_name
            server_node['personal_name'] = personal_name
            self._personal_2_node[server_name] = server_node
            self._tango_name_2_node['dserver/%s' % server_name.lower()] = server_node
            self._strong_node_ref.add(server_node)
            
        device_node = static.Node(self._config,parent=server_node)
        self._strong_node_ref.add(device_node)
        device_node['tango_name'] = tango_name
        device_node['class'] = klass_name
        if alias is not None:
            device_node['alias'] = alias
        device_node_list = server_node.get('device',[])
        device_node_list.append(device_node)
        server_node['device'] = device_node_list
        self._tango_name_2_node[tango_name] = device_node


        server_node.save()
示例#3
0
文件: beacon.py 项目: wkitka/pytango
    def put_device_property(self, device_name, nb_properties, attr_prop_list):
        device_name = device_name.lower()
        device_node = self._tango_name_2_node.get(device_name)
        old_properties = device_node.get('properties')
        if isinstance(old_properties,str): #reference
            properties_key = old_properties.split('/')
            node_refname = properties_key[0]
            property_node = self._config.get_config(node_refname)
            if properties_key == node_refname:
                old_properties = property_node
            else:
                for key in properties_key[1:]:
                    property_node = property_node.get(key)
                    if property_node is None:
                        break
                old_properties = property_node
        if old_properties is None:
            properties = static.Node(self._config,parent=device_node)
            device_node['properties'] = properties
        else:
            properties = old_properties

        id_prop = 0
        for i in range(nb_properties) :
            prop_name,prop_nb_values = attr_prop_list[id_prop],int(attr_prop_list[id_prop + 1])
            id_prop += 2
            if prop_nb_values == 1:
                properties[prop_name] = attr_prop_list[id_prop]
            else:
                properties[prop_name] = attr_prop_list[id_prop:id_prop + prop_nb_values]
            id_prop += prop_nb_values
        properties.save()
示例#4
0
文件: beacon.py 项目: wkitka/pytango
 def put_class_property(self, class_name, nb_properties, attr_prop_list):
     attr_id = 0
     class_node = self._class_name_2_node.get(class_name)
     if class_node is None:
         class_node = static.Node(self._config,parent=self._config.root,
                                  filename = 'tango/%s.yml' % class_name.replace('/','_'))
         class_node['class'] = class_name
         self._strong_node_ref.add(class_node)
         self._class_name_2_node[class_name] = class_node
         
     properties = class_node.get('properties',dict())
     for k in range(nb_properties):
         prop_name,nb_values = attr_prop_list[attr_id],int(attr_prop_list[attr_id + 1])
         attr_id += 2
         if nb_values == 1:
             properties[prop_name] = attr_prop_list[attr_id]
         else:
             properties[prop_name] = list(attr_prop_list[attr_id:])
     class_node['properties'] = properties
     class_node.save()