[pytango] 449/483: New server style
Sandor Bodo-Merle
sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:15:11 UTC 2017
This is an automated email from the git hooks/post-receive script.
sbodomerle-guest pushed a commit to annotated tag bliss_8.10
in repository pytango.
commit d4ce0128dc099f1c8a6abfbb82322dab87e9743f
Author: coutinho <coutinho at esrf.fr>
Date: Thu Mar 26 17:34:35 2015 +0100
New server style
Add information to the help parser logging level
---
src/boost/python/databaseds/database.py | 3666 +++++++++++--------------------
1 file changed, 1281 insertions(+), 2385 deletions(-)
diff --git a/src/boost/python/databaseds/database.py b/src/boost/python/databaseds/database.py
index a663e64..d67a715 100644
--- a/src/boost/python/databaseds/database.py
+++ b/src/boost/python/databaseds/database.py
@@ -1,44 +1,12 @@
#!/usr/bin/env python
-# -*- coding:utf-8 -*-
-
-
-##############################################################################
-## license :
-##============================================================================
-##
-## File : DataBase.py
-##
-## Project : TANGO
-##
-## $Author : controls$
-##
-## $Revision : $
-##
-## $Date : $
-##
-## $HeadUrl : $
-##============================================================================
-## This file is generated by POGO
-## (Program Obviously used to Generate tango Object)
-##
-## (c) - Software Engineering Group - ESRF
-##############################################################################
+# -*- coding: utf-8 -*-
"""This class manage the TANGO database."""
-__all__ = ["DataBase", "DataBaseClass", "main"]
-
-__docformat__ = 'restructuredtext'
-
-import PyTango
import sys
-# Add additional import
-
import time
-
-#----- PROTECTED REGION ID(DataBase.additionnal_import) ENABLED START -----#
-
import logging
+import functools
try:
import argparse
@@ -46,9 +14,23 @@ except ImportError:
argparse = None
from optparse import OptionParser
+import PyTango
+from PyTango import AttrWriteType, GreenMode
+from PyTango.server import Device, DeviceMeta
+from PyTango.server import attribute, command
+from PyTango.server import class_property
+from PyTango.server import device_property
+from PyTango.server import run
+
from PyTango.globals import get_class, get_class_by_class, \
get_constructed_class_by_class
+
+READ_ONLY = AttrWriteType.READ
+WRITE_ONLY = AttrWriteType.WRITE
+READ_WRITE = AttrWriteType.READ_WRITE
+READ_WITH_WRITE = AttrWriteType.READ_WITH_WRITE
+
#Argument Options
global options
global WILDCARD_REPLACEMENT
@@ -122,67 +104,55 @@ class TimeStructure:
self.calls = 0
self.index = ''
+def stats(f):
+ fname = f.__name__
+ @functools.wraps(f)
+ def wrapper(self, *args, **kwargs):
+ start = time.time()
+ try:
+ return f(self, *args, **kwargs)
+ finally:
+ end = time.time()
+ update_timing_stats(self, start, end, fname)
+ return wrapper
+
+def update_timing_stats(dev, time_before, time_after, cmd_name):
+ tmp_time = dev.timing_maps[cmd_name]
+ time_elapsed = (time_after - time_before) * 1000.
+ tmp_time.total_elapsed = tmp_time.total_elapsed + time_elapsed
+ if time_elapsed > tmp_time.maximum:
+ tmp_time.maximum = time_elapsed
+ if time_elapsed < tmp_time.minimum or tmp_time.minimum == 0:
+ tmp_time.minimum = time_elapsed
+ tmp_time.calls = tmp_time.calls + 1
+ tmp_time.average = tmp_time.total_elapsed/tmp_time.calls
+
+
+class DataBase(Device):
+ """
+ DataBase TANGO device class
+ """
+ __metaclass__ = DeviceMeta
+
+ # --- attributes ---------------------------------------
-cmd_list = ["DbImportDevice", "DbExportDevice", "DbGetHostServerList", "DbGetHostList","DbGetServerList", "DbGetDevicePropertyList", "DbGetClassPropertyList", "DbGetDeviceMemberList", "DbGetDeviceFamilyList", "DbGetDeviceDomainList", "DbGetDeviceProperty", "DbPutDeviceProperty", "DbDeleteDeviceProperty", "DbInfo", "DbGetDeviceClassList", "DbGetDeviceAttributeProperty", "DbPutDeviceAttributeProperty", "DbGetDeviceAttributeProperty2", "DbPutDeviceAttributeProperty2", "DbUnExportServer", " [...]
+ Timing_maximum = attribute(dtype=('float64',), access=READ_ONLY)
-#----- PROTECTED REGION END -----# // DataBase.additionnal_import
+ Timing_average = attribute(dtype=('float64',), access=READ_ONLY)
-##############################################################################
-## Device States Description
-##
-## No states for this device
-##############################################################################
+ Timing_index = attribute(dtype=('str',), access=READ_ONLY)
-class DataBase (PyTango.Device_4Impl):
+ Timing_calls = attribute(dtype=('float64',), access=READ_ONLY)
-#--------- Add you global variables here --------------------------
+ Timing_info = attribute(dtype=('str',), access=READ_ONLY)
- def update_timing_stats(self, time_before, time_after, cmd_name):
- tmp_time = self.timing_maps[cmd_name]
- time_elapsed = (time_after - time_before) * 1000.
- tmp_time.total_elapsed = tmp_time.total_elapsed + time_elapsed
- if time_elapsed > tmp_time.maximum:
- tmp_time.maximum = time_elapsed
- if time_elapsed < tmp_time.minimum or tmp_time.minimum == 0:
- tmp_time.minimum = time_elapsed
- tmp_time.calls = tmp_time.calls + 1
- tmp_time.average = tmp_time.total_elapsed/tmp_time.calls
+ StoredProcedureRelease = attribute(dtype='str', access=READ_ONLY)
+
+ Timing_minimum = attribute(dtype=('float64',), access=READ_ONLY)
- def init_timing_stats(self):
- self.timing_maps = {}
- for cmd in cmd_list:
- self.timing_maps[cmd] = TimeStructure()
- self.timing_maps[cmd].index = cmd
-
-#----- PROTECTED REGION ID(DataBase.global_variables) ENABLED START -----#
-
- def get_device_properties(self, device_klass):
- return
-
-#----- PROTECTED REGION END -----# // DataBase.global_variables
-#------------------------------------------------------------------
-# Device constructor
-#------------------------------------------------------------------
- def __init__(self, cl, name):
- PyTango.Device_4Impl.__init__(self, cl, name)
- self.debug_stream("In " + self.get_name() + ".__init__()")
- DataBase.init_device(self)
-
-#------------------------------------------------------------------
-# Device destructor
-#------------------------------------------------------------------
- def delete_device(self):
- self.debug_stream("In " + self.get_name() + ".delete_device()")
- #----- PROTECTED REGION ID(DataBase.delete_device) ENABLED START -----#
-
- #----- PROTECTED REGION END -----# // DataBase.delete_device
-
-#------------------------------------------------------------------
-# Device initialization
-#------------------------------------------------------------------
def init_device(self):
- self.debug_stream("In " + self.get_name() + ".init_device()")
- #self.get_device_properties(self.get_device_class())
+ self._log = log = logging.getLogger(self.get_name())
+ self._log.debug("In init_device()")
self.attr_StoredProcedureRelease_read = ''
self.attr_Timing_average_read = [0.0]
self.attr_Timing_minimum_read = [0.0]
@@ -191,7 +161,6 @@ class DataBase (PyTango.Device_4Impl):
self.attr_Timing_index_read = ['']
self.attr_Timing_info_read = ['']
self.init_timing_stats()
- #----- PROTECTED REGION ID(DataBase.init_device) ENABLED START -----#
m = __import__('db_access.%s' % (options.db_access),None,None,
'db_access.%s' % (options.db_access))
self.db = m.get_db(personal_name = options.argv[1])
@@ -202,396 +171,269 @@ class DataBase (PyTango.Device_4Impl):
pass
self.set_state(PyTango.DevState.ON)
- #----- PROTECTED REGION END -----# // DataBase.init_device
-
-#------------------------------------------------------------------
-# Always excuted hook method
-#------------------------------------------------------------------
- def always_executed_hook(self):
- self.debug_stream("In " + self.get_name() + ".always_excuted_hook()")
- #----- PROTECTED REGION ID(DataBase.always_executed_hook) ENABLED START -----#
-
- #----- PROTECTED REGION END -----# // DataBase.always_executed_hook
-
-#==================================================================
-#
-# DataBase read/write attribute methods
-#
-#==================================================================
-
-#------------------------------------------------------------------
-# Read StoredProcedureRelease attribute
-#------------------------------------------------------------------
- def read_StoredProcedureRelease(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_StoredProcedureRelease()")
- #----- PROTECTED REGION ID(DataBase.StoredProcedureRelease_read) ENABLED START -----#
- self.attr_StoredProcedureRelease_read = self.db.get_stored_procedure_release()
- #----- PROTECTED REGION END -----# // DataBase.StoredProcedureRelease_read
- attr.set_value(self.attr_StoredProcedureRelease_read)
-
-#------------------------------------------------------------------
-# Read Timing_average attribute
-#------------------------------------------------------------------
- def read_Timing_average(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_average()")
- #----- PROTECTED REGION ID(DataBase.Timing_average_read) ENABLED START -----#
-
- self.attr_Timing_average_read[:] = []
- for tmp_name in cmd_list:
- self.attr_Timing_average_read.append(self.timing_maps[tmp_name].average)
-
- #----- PROTECTED REGION END -----# // DataBase.Timing_average_read
- attr.set_value(self.attr_Timing_average_read)
-
-#------------------------------------------------------------------
-# Read Timing_minimum attribute
-#------------------------------------------------------------------
- def read_Timing_minimum(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_minimum()")
- #----- PROTECTED REGION ID(DataBase.Timing_minimum_read) ENABLED START -----#
-
- self.attr_Timing_minimum_read[:] = []
- for tmp_name in cmd_list:
- self.attr_Timing_minimum_read.append(self.timing_maps[tmp_name].minimum)
-
- #----- PROTECTED REGION END -----# // DataBase.Timing_minimum_read
- attr.set_value(self.attr_Timing_minimum_read)
+ def init_timing_stats(self):
+ self.timing_maps = {}
+ for cmd in dir(self):
+ if cmd.startswith('Db'):
+ self.timing_maps[cmd] = TimeStructure()
+ self.timing_maps[cmd].index = cmd
-#------------------------------------------------------------------
-# Read Timing_maximum attribute
-#------------------------------------------------------------------
- def read_Timing_maximum(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_maximum()")
- #----- PROTECTED REGION ID(DataBase.Timing_maximum_read) ENABLED START -----#
+ # --- attribute methods --------------------------------
+ def read_Timing_maximum(self):
+ self._log.debug("In read_Timing_maximum()")
self.attr_Timing_maximum_read[:] = []
for tmp_name in cmd_list:
self.attr_Timing_maximum_read.append(self.timing_maps[tmp_name].maximum)
- #----- PROTECTED REGION END -----# // DataBase.Timing_maximum_read
- attr.set_value(self.attr_Timing_maximum_read)
+ return self.attr_Timing_maximum_read
-#------------------------------------------------------------------
-# Read Timing_calls attribute
-#------------------------------------------------------------------
- def read_Timing_calls(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_calls()")
- #----- PROTECTED REGION ID(DataBase.Timing_calls_read) ENABLED START -----#
+ def read_Timing_average(self):
+ self._log.debug("In read_Timing_average()")
- self.attr_Timing_calls_read[:] = []
+ self.attr_Timing_average_read[:] = []
for tmp_name in cmd_list:
- self.attr_Timing_calls_read.append(self.timing_maps[tmp_name].calls)
-
- #----- PROTECTED REGION END -----# // DataBase.Timing_calls_read
- attr.set_value(self.attr_Timing_calls_read)
-
-#------------------------------------------------------------------
-# Read Timing_index attribute
-#------------------------------------------------------------------
- def read_Timing_index(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_index()")
- #----- PROTECTED REGION ID(DataBase.Timing_index_read) ENABLED START -----#
+ self.attr_Timing_average_read.append(self.timing_maps[tmp_name].average)
+ return self.attr_Timing_average_read
+ def read_Timing_index(self):
+ self._log.debug("In read_Timing_index()")
for tmp_name in cmd_list:
self.attr_Timing_index_read.append(self.timing_maps[tmp_name].index)
+ return self.attr_Timing_index_read
- #----- PROTECTED REGION END -----# // DataBase.Timing_index_read
- attr.set_value(self.attr_Timing_index_read)
+ def read_Timing_calls(self):
+ self._log.debug("In read_Timing_calls()")
+ self.attr_Timing_calls_read[:] = []
+ for tmp_name in cmd_list:
+ self.attr_Timing_calls_read.append(self.timing_maps[tmp_name].calls)
+ return self.attr_Timing_calls_read
-#------------------------------------------------------------------
-# Read Timing_info attribute
-#------------------------------------------------------------------
- def read_Timing_info(self, attr):
- self.debug_stream("In " + self.get_name() + ".read_Timing_info()")
- #----- PROTECTED REGION ID(DataBase.Timing_info_read) ENABLED START -----#
- self.attr_Timing_info_read[:] = []
+ def read_Timing_info(self):
+ self._log.debug("In read_Timing_info()")
+ self.attr_Timing_info_read[:] = []
util = PyTango.Util.instance()
self.attr_Timing_info_read.append("TANGO Database Timing info on host " + util.get_host_name())
self.attr_Timing_info_read.append(" ")
self.attr_Timing_info_read.append("command average minimum maximum calls")
self.attr_Timing_info_read.append(" ")
-
-
for tmp_name in cmd_list:
tmp_info = "%41s\t%6.3f\t%6.3f\t%6.3f\t%.0f"%(tmp_name, self.timing_maps[tmp_name].average, self.timing_maps[tmp_name].minimum, self.timing_maps[tmp_name].maximum, self.timing_maps[tmp_name].calls)
self.attr_Timing_info_read.append(tmp_info)
- #----- PROTECTED REGION END -----# // DataBase.Timing_info_read
- attr.set_value(self.attr_Timing_info_read)
-
+ return self.attr_Timing_info_read
-#------------------------------------------------------------------
-# Read Attribute Hardware
-#------------------------------------------------------------------
- def read_attr_hardware(self, data):
- self.debug_stream("In " + self.get_name() + ".read_attr_hardware()")
- #----- PROTECTED REGION ID(DataBase.read_attr_hardware) ENABLED START -----#
-
- #----- PROTECTED REGION END -----# // DataBase.read_attr_hardware
+ def read_StoredProcedureRelease(self):
+ self._log.debug("In read_StoredProcedureRelease()")
+ self.attr_StoredProcedureRelease_read = self.db.get_stored_procedure_release()
+ return self.attr_StoredProcedureRelease_read
+ def read_Timing_minimum(self):
+ self._log.debug("In read_Timing_minimum()")
+ self.attr_Timing_minimum_read[:] = []
+ for tmp_name in cmd_list:
+ self.attr_Timing_minimum_read.append(self.timing_maps[tmp_name].minimum)
+ return self.attr_Timing_minimum_read
-#==================================================================
-#
-# DataBase command methods
-#
-#==================================================================
+ # --- commands -----------------------------------------
-#------------------------------------------------------------------
-# DbAddDevice command:
-#------------------------------------------------------------------
- def DbAddDevice(self, argin):
- """ Add a Tango class device to a specific device server
-
- :param argin: Str[0] = Full device server process name
- Str[1] = Device name
- Str[2] = Tango class name
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbAddDevice()")
- #----- PROTECTED REGION ID(DataBase.DbAddDevice) ENABLED START -----#
+ @stats
+ @command(dtype_in='str', doc_in='The wildcard', dtype_out=('str',), doc_out='Device name domain list')
+ def DbGetDeviceDomainList(self, argin):
+ """ Get list of device domain name matching the specified
- if len(argin) < 3:
- self.warn_stream("DataBase::AddDevice(): incorrect number of input arguments ")
- th_exc(DB_IncorrectArguments,
- "incorrect no. of input arguments, needs at least 3 (server,device,class)",
- "DataBase::AddDevice()")
+ :param argin: The wildcard
+ :type: PyTango.DevString
+ :return: Device name domain list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceDomainList()")
+ return self.db.get_device_domain_list(replace_wildcard(argin))
- self.info_stream("DataBase::AddDevice(): insert " + argin[0] + " %s server with device " + argin[1])
- server_name, d_name, klass_name = argin[:3]
- if len(argin) > 3:
- alias = argin[3]
- else:
- alias = None
+ @stats
+ @command(dtype_in='str', doc_in='Device server name (executable/instance)', doc_out='none')
+ def DbUnExportServer(self, argin):
+ """ Mark all devices belonging to a specified device server
+ process as non exported
- ret, dev_name, dfm = check_device_name(d_name)
- if not ret:
- th_exc(DB_IncorrectDeviceName,
- "device name (" + d_name + ") syntax error (should be [tango:][//instance/]domain/family/member)",
- "DataBase::AddDevice()")
- # Lock table
- self.db.add_device(server_name, (dev_name, dfm) , klass_name, alias=alias)
+ :param argin: Device server name (executable/instance)
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbUnExportServer()")
+ self.db.unexport_server(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbAddDevice
+ @command(dtype_in=('str',), doc_in='str[0] = device name\nStr[1]...str[n] = attribute name(s)', doc_out='none')
+ def DbDeleteAllDeviceAttributeProperty(self, argin):
+ """ Delete all attribute properties for the specified device attribute(s)
-#------------------------------------------------------------------
-# DbAddServer command:
-#------------------------------------------------------------------
- def DbAddServer(self, argin):
- """ Create a device server process entry in database
-
- :param argin: Str[0] = Full device server name
- Str[1] = Device(s) name
- Str[2] = Tango class name
- Str[n] = Device name
- Str[n + 1] = Tango class name
+ :param argin: str[0] = device name
+ Str[1]...str[n] = attribute name(s)
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbAddServer()")
- #----- PROTECTED REGION ID(DataBase.DbAddServer) ENABLED START -----#
+ self._log.debug("In DbDeleteAllDeviceAttributeProperty()")
- if len(argin) < 3 or not len(argin) % 2:
- self.warn_stream("DataBase::AddServer(): incorrect number of input arguments ")
+ if len(argin) < 2:
+ self.warn_stream("DataBase::DbDeleteAllDeviceAttributeProperty(): insufficient number of arguments ")
th_exc(DB_IncorrectArguments,
- "incorrect no. of input arguments, needs at least 3 (server,device,class)",
- "DataBase::AddServer()")
- server_name = argin[0]
+ "insufficient number of arguments to delete all device attribute(s) property",
+ "DataBase::DbDeleteAllDeviceAttributeProperty()")
- for i in range((len(argin) - 1) / 2):
- d_name, klass_name = argin[i * 2 + 1], argin[i * 2 + 2]
- ret, dev_name, dfm = check_device_name(d_name)
- if not ret:
- th_exc(DB_IncorrectDeviceName,
- "device name (" + d_name + ") syntax error (should be [tango:][//instance/]domain/family/member)",
- "DataBase::AddServer()")
- self.db.add_device(server_name, (dev_name, dfm) , klass_name)
+ dev_name = argin[0]
+ ret, d_name, dfm = check_device_name(dev_name)
+ if not ret:
+ th_exc(DB_IncorrectDeviceName,
+ "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
+ "DataBase::DbDeleteAllDeviceAttributeProperty()")
- #----- PROTECTED REGION END -----# // DataBase.DbAddServer
+ self.db.delete_all_device_attribute_property(dev_name, argin[1:])
-#------------------------------------------------------------------
-# DbDeleteAttributeAlias command:
-#------------------------------------------------------------------
+ @command(dtype_in='str', doc_in='Attriibute alias name.', doc_out='none')
def DbDeleteAttributeAlias(self, argin):
""" Delete an attribute alias.
-
+
:param argin: Attriibute alias name.
:type: PyTango.DevString
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteAttributeAlias()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteAttributeAlias) ENABLED START -----#
-
+ self._log.debug("In DbDeleteAttributeAlias()")
self.db.delete_attribute_alias(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteAttributeAlias
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class\nStr[1] = Attribute name\nStr[2] = Property name', dtype_out=('str',), doc_out='Str[0] = Attribute name\nStr[1] = Property name\nStr[2] = date\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n')
+ def DbGetClassAttributePropertyHist(self, argin):
+ """ Retrieve Tango class attribute property history
-#------------------------------------------------------------------
-# DbDeleteClassAttribute command:
-#------------------------------------------------------------------
- def DbDeleteClassAttribute(self, argin):
- """ delete a class attribute and all its properties from database
-
- :param argin: Str[0] = Tango class name
+ :param argin: Str[0] = Tango class
Str[1] = Attribute name
+ Str[2] = Property name
:type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteClassAttribute()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteClassAttribute) ENABLED START -----#
-
- if len(argin) < 2:
- self.warn_stream("DataBase::db_delete_class_attribute(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to delete class attribute",
- "DataBase::DeleteClassAttribute()")
-
- klass_name, attr_name = argin[:2]
-
- self.db.delete_class_attribute(klass_name, attr_name)
+ :return: Str[0] = Attribute name
+ Str[1] = Property name
+ Str[2] = date
+ Str[3] = Property value number (array case)
+ Str[4] = Property value 1
+ Str[n] = Property value n
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassAttributePropertyHist()")
+ class_name = argin[0]
+ attribute = replace_wildcard(argin[1])
+ prop_name = replace_wildcard(argin[2])
+ return self.db.get_class_attribute_property_hist(class_name, attribute, prop_name)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassAttribute
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value number (array case)\nStr[5] = Property value 1\nStr[n] = Property value n (array case)\n.....', doc_out='none')
+ def DbPutDeviceAttributeProperty2(self, argin):
+ """ Put device attribute property. This command adds the possibility to have attribute property
+ which are arrays. Not possible with the old DbPutDeviceAttributeProperty command.
+ This old command is not deleted for compatibility reasons.
-#------------------------------------------------------------------
-# DbDeleteClassAttributeProperty command:
-#------------------------------------------------------------------
- def DbDeleteClassAttributeProperty(self, argin):
- """ delete class attribute properties from database
-
- :param argin: Str[0] = Tango class name
- Str[1] = Attribute name
- Str[2] = Property name
- Str[n] = Property name
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute number
+ Str[2] = Attribute name
+ Str[3] = Property number
+ Str[4] = Property name
+ Str[5] = Property value number (array case)
+ Str[5] = Property value 1
+ Str[n] = Property value n (array case)
+ .....
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteClassAttributeProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteClassAttributeProperty) ENABLED START -----#
+ self._log.debug("In DbPutDeviceAttributeProperty2()")
+ device_name = argin[0]
+ nb_attributes = int(argin[1])
+ self.db.put_device_attribute_property2(device_name, nb_attributes, argin[2:])
- if len(argin) < 3:
- self.warn_stream("DataBase::db_delete_class_attribute_property(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to delete class attribute property",
- "DataBase::DeleteClassAttributeProperty()")
+ @command(dtype_in='str', doc_in='attribute alias filter string (eg: att*)', dtype_out=('str',), doc_out='attribute aliases')
+ def DbGetAttributeAliasList(self, argin):
+ """ Get attribute alias list for a specified filter
- klass_name, attr_name = argin[:2]
+ :param argin: attribute alias filter string (eg: att*)
+ :type: PyTango.DevString
+ :return: attribute aliases
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetAttributeAliasList()")
+ if not argin:
+ argin = "%"
+ else:
+ argin = replace_wildcard(argin)
+ return self.db.get_attribute_alias_list(argin)
- for prop_name in argin[2:]:
- self.db.delete_class_attribute_property(klass_name, attr_name, prop_name)
+ @command(dtype_in='str', doc_in='Class name', dtype_out=('str',), doc_out='Device exported list')
+ def DbGetExportdDeviceListForClass(self, argin):
+ """ Query the database for device exported for the specified class.
+
+ :param argin: Class name
+ :type: PyTango.DevString
+ :return: Device exported list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetExportdDeviceListForClass()")
+ argin = replace_wildcard(argin)
+ return self.db.get_exported_device_list_for_class(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassAttributeProperty
+ @command(dtype_in=('str',), doc_in='Str[0] = attribute name\nStr[1] = attribute alias', doc_out='none')
+ def DbPutAttributeAlias(self, argin):
+ """ Define an alias for an attribute
-#------------------------------------------------------------------
-# DbDeleteClassProperty command:
-#------------------------------------------------------------------
- def DbDeleteClassProperty(self, argin):
- """ Delete class properties from database
-
- :param argin: Str[0] = Tango class name
- Str[1] = Property name
- Str[n] = Property name
+ :param argin: Str[0] = attribute name
+ Str[1] = attribute alias
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteClassProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteClassProperty) ENABLED START -----#
+ self._log.debug("In DbPutAttributeAlias()")
- klass_name = argin[0]
+ if len(argin) < 2:
+ self.warn_stream("DataBase::DbPutAttributeAlias(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments to put attribute alias",
+ "DataBase::DbPutAttributeAlias()")
- for prop_name in argin[1:]:
- self.db.delete_class_property(prop_name)
+ attribute_name = argin[0]
+ attribute_alias = argin[1]
+ self.db.put_attribute_alias(attribute_name, attribute_alias)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassProperty
+ @stats
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Device server process name list')
+ def DbGetServerList(self, argin):
+ """ Get list of device server process defined in database
+ with name matching the specified filter
-#------------------------------------------------------------------
-# DbDeleteDevice command:
-#------------------------------------------------------------------
- def DbDeleteDevice(self, argin):
- """ Delete a devcie from database
-
- :param argin: device name
+ :param argin: The filter
:type: PyTango.DevString
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteDevice()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteDevice) ENABLED START -----#
-
- ret, dev_name, dfm = check_device_name(argin)
- if not ret:
- self.warn_stream("DataBase::db_delete_device(): device name " + argin + " incorrect ")
- th_exc(DB_IncorrectDeviceName,
- "failed to delete device, device name incorrect",
- "DataBase::DeleteDevice()")
- self.db.delete_device(dev_name)
+ :return: Device server process name list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetServerList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_server_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteDevice
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = CORBA IOR\nStr[2] = Device server process host name\nStr[3] = Device server process PID or string ``null``\nStr[4] = Device server process version', doc_out='none')
+ def DbExportDevice(self, argin):
+ """ Export a device to the database
-#------------------------------------------------------------------
-# DbDeleteDeviceAlias command:
-#------------------------------------------------------------------
- def DbDeleteDeviceAlias(self, argin):
- """ Delete a device alias.
-
- :param argin: device alias name
- :type: PyTango.DevString
- :return:
+ :param argin: Str[0] = Device name
+ Str[1] = CORBA IOR
+ Str[2] = Device server process host name
+ Str[3] = Device server process PID or string ``null``
+ Str[4] = Device server process version
+ :type: PyTango.DevVarStringArray
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceAlias()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceAlias) ENABLED START -----#
-
- self.db.delete_device_alias(argin)
+ DbExportDevice(self, argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceAlias
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute name\nStr[2] = Property name\nStr[n] = Property name', doc_out='none')
+ def DbDeleteDeviceAttributeProperty(self, argin):
+ """ delete a device attribute property from the database
-#------------------------------------------------------------------
-# DbDeleteDeviceAttribute command:
-#------------------------------------------------------------------
- def DbDeleteDeviceAttribute(self, argin):
- """ Delete device attribute properties from database
-
:param argin: Str[0] = Device name
Str[1] = Attribute name
+ Str[2] = Property name
+ Str[n] = Property name
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceAttribute()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceAttribute) ENABLED START -----#
-
- if len(argin) < 2:
- self.warn_stream("DataBase::db_delete_device_attribute(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to delete device attribute",
- "DataBase::DeleteDeviceAttribute()")
-
- dev_name, attr_name = argin[:2]
-
- ret, dev_name, dfm = check_device_name(argin)
- if not ret:
- self.warn_stream("DataBase::db_delete_device_attribute(): device name " + argin + " incorrect ")
- th_exc(DB_IncorrectDeviceName,
- "failed to delete device attribute, device name incorrect",
- "DataBase::DeleteDeviceAttribute()")
-
- self.db.delete_device_attribute(dev_name, attr_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceAttribute
-
-#------------------------------------------------------------------
-# DbDeleteDeviceAttributeProperty command:
-#------------------------------------------------------------------
- def DbDeleteDeviceAttributeProperty(self, argin):
- """ delete a device attribute property from the database
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute name
- Str[2] = Property name
- Str[n] = Property name
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceAttributeProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceAttributeProperty) ENABLED START -----#
+ self._log.debug("In DbDeleteDeviceAttributeProperty()")
if len(argin) < 3:
self.warn_stream("DataBase::db_delete_device_attribute_property(): insufficient number of arguments ")
@@ -608,1145 +450,883 @@ class DataBase (PyTango.Device_4Impl):
"failed to delete device attribute property, device name incorrect",
"DataBase::DeleteDeviceAttributeProperty()")
-
for prop_name in argin[2:]:
self.db.delete_device_attribute_property(dev_name, attr_name, prop_name)
+ @stats
+ @command(dtype_in='str', doc_in='The wildcard', dtype_out=('str',), doc_out='Family list')
+ def DbGetDeviceFamilyList(self, argin):
+ """ Get a list of device name families for device name matching the
+ specified wildcard
+ :param argin: The wildcard
+ :type: PyTango.DevString
+ :return: Family list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceFamilyList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_device_family_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceAttributeProperty
-
-#------------------------------------------------------------------
-# DbDeleteDeviceProperty command:
-#------------------------------------------------------------------
- def DbDeleteDeviceProperty(self, argin):
- """ Delete device property(ies)
-
- :param argin: Str[0] = Device name
- Str[1] = Property name
- Str[n] = Property name
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceProperty) ENABLED START -----#
-
- time_before = time.time()
+ @command(dtype_in='str', doc_in='filter', dtype_out=('str',), doc_out='list of exported devices')
+ def DbGetDeviceWideList(self, argin):
+ """ Get a list of devices whose names satisfy the filter.
- dev_name = argin[0]
- for prop_name in argin[1:]:
- self.db.delete_device_property(dev_name, prop_name)
+ :param argin: filter
+ :type: PyTango.DevString
+ :return: list of exported devices
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceWideList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_device_wide_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbDeleteDeviceProperty")
+ @command(dtype_in=('str',), doc_in='Str[0] = Object name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n....', doc_out='none')
+ def DbPutProperty(self, argin):
+ """ Create / Update free object property(ies)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceProperty
+ :param argin: Str[0] = Object name
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number
+ Str[4] = Property value 1
+ Str[n] = Property value n
+ ....
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbPutProperty()")
+ object_name = argin[0]
+ nb_properties = int(argin[1])
+ self.db.put_property(object_name, properties, argin[2:])
-#------------------------------------------------------------------
-# DbDeleteProperty command:
-#------------------------------------------------------------------
+ @command(dtype_in=('str',), doc_in='Str[0] = Object name\nStr[1] = Property name\nStr[n] = Property name', doc_out='none')
def DbDeleteProperty(self, argin):
""" Delete free property from database
-
+
:param argin: Str[0] = Object name
Str[1] = Property name
Str[n] = Property name
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteProperty) ENABLED START -----#
-
+ self._log.debug("In DbDeleteProperty()")
obj_name = argin[0]
for prop_name in argin[1:]:
self.db.delete_property(obj_name, prop_name)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteProperty
-
-#------------------------------------------------------------------
-# DbDeleteServer command:
-#------------------------------------------------------------------
- def DbDeleteServer(self, argin):
- """ Delete server from the database but dont delete device properties
-
- :param argin: Device server name
- :type: PyTango.DevString
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteServer()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteServer) ENABLED START -----#
-
- if '*' in argin or '%' in argin or not '/' in argin:
- self.warn_stream("DataBase::db_delete_server(): server name " + argin + " incorrect ")
- th_exc(DB_IncorrectServerName,
- "failed to delete server, server name incorrect",
- "DataBase::DeleteServer()")
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute name\nStr[n] = Attribute name', dtype_out=('str',), doc_out='Str[0] = Tango class name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value number (array case)\nStr[4] = Attribute property 1 value\nStr[n] = Attribute property 1 value (array case)\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value number (array case)\n [...]
+ def DbGetClassAttributeProperty2(self, argin):
+ """ This command supports array property compared to the old command called
+ DbGetClassAttributeProperty. The old command has not been deleted from the
+ server for compatibility reasons.
- self.db.delete_server(argin)
+ :param argin: Str[0] = Tango class name
+ Str[1] = Attribute name
+ Str[n] = Attribute name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Tango class name
+ Str[1] = Attribute property number
+ Str[2] = Attribute property 1 name
+ Str[3] = Attribute property 1 value number (array case)
+ Str[4] = Attribute property 1 value
+ Str[n] = Attribute property 1 value (array case)
+ Str[n + 1] = Attribute property 2 name
+ Str[n + 2] = Attribute property 2 value number (array case)
+ Str[n + 3] = Attribute property 2 value
+ Str[n + m] = Attribute property 2 value (array case)
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassAttributeProperty2()")
+ class_name = argin[0]
+ return self.db.get_class_attribute_property2(class_name, argin[1:])
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteServer
+ @stats
+ @command(dtype_in='str', doc_in='filter', dtype_out=('str',), doc_out='list of exported devices')
+ def DbGetDeviceExportedList(self, argin):
+ """ Get a list of exported devices whose names satisfy the filter (wildcard is
-#------------------------------------------------------------------
-# DbDeleteServerInfo command:
-#------------------------------------------------------------------
- def DbDeleteServerInfo(self, argin):
- """ delete info related to a Tango devvice server process
-
- :param argin: Device server name
+ :param argin: filter
:type: PyTango.DevString
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteServerInfo()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteServerInfo) ENABLED START -----#
-
- self.db.delete_server_info(argin)
+ :return: list of exported devices
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceExportedList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_device_exported_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteServerInfo
+ @command(dtype_in='str', doc_in='The device name', dtype_out='str', doc_out='The alias found')
+ def DbGetDeviceAlias(self, argin):
+ """ Return alias for device name if found.
-#------------------------------------------------------------------
-# DbExportDevice command:
-#------------------------------------------------------------------
- def DbExportDevice(self, argin):
- """ Export a device to the database
-
- :param argin: Str[0] = Device name
- Str[1] = CORBA IOR
- Str[2] = Device server process host name
- Str[3] = Device server process PID or string ``null``
- Str[4] = Device server process version
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbExportDevice()")
- #----- PROTECTED REGION ID(DataBase.DbExportDevice) ENABLED START -----#
- time_before = time.time()
- if len(argin) < 5:
- self.warn_stream("DataBase::DbExportDevice(): insufficient export info for device ")
- th_exc(DB_IncorrectArguments,
- "insufficient export info for device",
- "DataBase::ExportDevice()")
+ :param argin: The device name
+ :type: PyTango.DevString
+ :return: The alias found
+ :rtype: PyTango.DevString """
+ self._log.debug("In DbGetDeviceAlias()")
+ ret, dev_name, dfm = check_device_name(argin)
+ if not ret:
+ th_exc(DB_IncorrectDeviceName,
+ "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
+ "DataBase::DbGetDeviceAlias()")
- dev_name, IOR, host, pid, version = argin[:5]
- dev_name = dev_name.lower()
- if pid.lower() == 'null':
- pid = "-1"
- self.db.export_device(dev_name, IOR, host, pid, version)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbExportDevice")
+ return self.db.get_device_alias(dev_name)
- #----- PROTECTED REGION END -----# // DataBase.DbExportDevice
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value\n.....', doc_out='none')
+ def DbPutClassAttributeProperty(self, argin):
+ """ Create/Update class attribute property(ies) in database
-#------------------------------------------------------------------
-# DbExportEvent command:
-#------------------------------------------------------------------
- def DbExportEvent(self, argin):
- """ Export Event channel to database
-
- :param argin: Str[0] = event channel name (or factory name)
- Str[1] = CORBA IOR
- Str[2] = Notifd host name
- Str[3] = Notifd pid
- Str[4] = Notifd version
+ :param argin: Str[0] = Tango class name
+ Str[1] = Attribute number
+ Str[2] = Attribute name
+ Str[3] = Property number
+ Str[4] = Property name
+ Str[5] = Property value
+ .....
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbExportEvent()")
- #----- PROTECTED REGION ID(DataBase.DbExportEvent) ENABLED START -----#
-
- time_before = time.time()
- if len(argin) < 5:
- self.warn_stream("DataBase::db_export_event(): insufficient export info for event ")
- th_exc(DB_IncorrectArguments,
- "insufficient export info for event",
- "DataBase::ExportEvent()")
-
- event, IOR, host, pid, version = argin[:5]
- event = replace_wildcard(event.lower())
- self.db.export_event(event, IOR, host, pid, version)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbExportEvent")
+ self._log.debug("In DbPutClassAttributeProperty()")
+ class_name = argin[0]
+ nb_attributes = int(argin[1])
+ self.db.put_class_attribute_property(class_name, nb_attributes, argin[2:])
- #----- PROTECTED REGION END -----# // DataBase.DbExportEvent
+ @stats
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Property name list')
+ def DbGetClassPropertyList(self, argin):
+ """ Get property list for a given Tango class with a specified filter
-#------------------------------------------------------------------
-# DbGetAliasDevice command:
-#------------------------------------------------------------------
- def DbGetAliasDevice(self, argin):
- """ Get device name from its alias.
-
- :param argin: Alias name
+ :param argin: The filter
:type: PyTango.DevString
- :return: Device name
- :rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetAliasDevice()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetAliasDevice) ENABLED START -----#
-
+ :return: Property name list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassPropertyList()")
if not argin:
argin = "%"
else:
argin = replace_wildcard(argin)
+ return self.db.get_class_property_list(argin)
- argout = self.db.get_alias_device(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetAliasDevice
- return argout
-
-#------------------------------------------------------------------
-# DbGetAttributeAlias command:
-#------------------------------------------------------------------
- def DbGetAttributeAlias(self, argin):
- """ Get the attribute name for the given alias.
- If alias not found in database, returns an empty string.
-
- :param argin: The attribute alias name
- :type: PyTango.DevString
- :return: The attribute name (device/attribute)
- :rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetAttributeAlias()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetAttributeAlias) ENABLED START -----#
-
- argout = self.db.get_attribute_alias(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAlias
- return argout
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Device alias list')
+ def DbGetDeviceAliasList(self, argin):
+ """ Get device alias name with a specific filter
-#------------------------------------------------------------------
-# DbGetAttributeAliasList command:
-#------------------------------------------------------------------
- def DbGetAttributeAliasList(self, argin):
- """ Get attribute alias list for a specified filter
-
- :param argin: attribute alias filter string (eg: att*)
+ :param argin: The filter
:type: PyTango.DevString
- :return: attribute aliases
+ :return: Device alias list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetAttributeAliasList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetAttributeAliasList) ENABLED START -----#
-
+ self._log.debug("In DbGetDeviceAliasList()")
if not argin:
argin = "%"
else:
argin = replace_wildcard(argin)
- argout = self.db.get_attribute_alias_list(argin)
+ return self.db.get_device_alias_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAliasList
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute name', doc_out='none')
+ def DbDeleteClassAttribute(self, argin):
+ """ delete a class attribute and all its properties from database
-#------------------------------------------------------------------
-# DbGetClassAttributeList command:
-#------------------------------------------------------------------
- def DbGetClassAttributeList(self, argin):
- """ Get attrilute list for a given Tango class with a specified filter
-
:param argin: Str[0] = Tango class name
- Str[1] = Attribute name filter (eg: att*)
+ Str[1] = Attribute name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Class attribute name
- Str[n] = Class attribute name
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassAttributeList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassAttributeList) ENABLED START -----#
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteClassAttribute()")
- class_name = argin[0]
- wildcard = replace_wildcard(argin[1])
+ if len(argin) < 2:
+ self.warn_stream("DataBase::db_delete_class_attribute(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments to delete class attribute",
+ "DataBase::DeleteClassAttribute()")
+
+ klass_name, attr_name = argin[:2]
- argout = self.db.get_class_attribute_list(class_name, wildcard)
+ self.db.delete_class_attribute(klass_name, attr_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeList
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class\nStr[1] = Property name', dtype_out=('str',), doc_out='Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n')
+ def DbGetClassPropertyHist(self, argin):
+ """ Retrieve Tango class property history
-#------------------------------------------------------------------
-# DbGetClassAttributeProperty command:
-#------------------------------------------------------------------
- def DbGetClassAttributeProperty(self, argin):
- """ Get Tango class property(ies) value
-
- :param argin: Str[0] = Tango class name
- Str[1] = Attribute name
- Str[n] = Attribute name
+ :param argin: Str[0] = Tango class
+ Str[1] = Property name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Tango class name
- Str[1] = Attribute property number
- Str[2] = Attribute property 1 name
- Str[3] = Attribute property 1 value
- Str[n + 1] = Attribute property 2 name
- Str[n + 2] = Attribute property 2 value
+ :return: Str[0] = Property name
+ Str[1] = date
+ Str[2] = Property value number (array case)
+ Str[3] = Property value 1
+ Str[n] = Property value n
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassAttributeProperty()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassAttributeProperty) ENABLED START -----#
-
+ self._log.debug("In DbGetClassPropertyHist()")
class_name = argin[0]
- argout = self.db.get_class_attribute_property(class_name, argin[1:])
+ prop_name = argin[1]
+ return self.db.get_class_property_hist(class_name, prop_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeProperty
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute name', doc_out='none')
+ def DbDeleteDeviceAttribute(self, argin):
+ """ Delete device attribute properties from database
-#------------------------------------------------------------------
-# DbGetClassAttributeProperty2 command:
-#------------------------------------------------------------------
- def DbGetClassAttributeProperty2(self, argin):
- """ This command supports array property compared to the old command called
- DbGetClassAttributeProperty. The old command has not been deleted from the
- server for compatibility reasons.
-
- :param argin: Str[0] = Tango class name
+ :param argin: Str[0] = Device name
Str[1] = Attribute name
- Str[n] = Attribute name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Tango class name
- Str[1] = Attribute property number
- Str[2] = Attribute property 1 name
- Str[3] = Attribute property 1 value number (array case)
- Str[4] = Attribute property 1 value
- Str[n] = Attribute property 1 value (array case)
- Str[n + 1] = Attribute property 2 name
- Str[n + 2] = Attribute property 2 value number (array case)
- Str[n + 3] = Attribute property 2 value
- Str[n + m] = Attribute property 2 value (array case)
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassAttributeProperty2()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassAttributeProperty2) ENABLED START -----#
-
- class_name = argin[0]
- argout = self.db.get_class_attribute_property2(class_name, argin[1:])
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteDeviceAttribute()")
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeProperty2
- return argout
+ if len(argin) < 2:
+ self.warn_stream("DataBase::db_delete_device_attribute(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments to delete device attribute",
+ "DataBase::DeleteDeviceAttribute()")
-#------------------------------------------------------------------
-# DbGetClassAttributePropertyHist command:
-#------------------------------------------------------------------
- def DbGetClassAttributePropertyHist(self, argin):
- """ Retrieve Tango class attribute property history
-
- :param argin: Str[0] = Tango class
- Str[1] = Attribute name
- Str[2] = Property name
- :type: PyTango.DevVarStringArray
- :return: Str[0] = Attribute name
- Str[1] = Property name
- Str[2] = date
- Str[3] = Property value number (array case)
- Str[4] = Property value 1
- Str[n] = Property value n
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassAttributePropertyHist()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassAttributePropertyHist) ENABLED START -----#
- class_name = argin[0]
- attribute = replace_wildcard(argin[1])
- prop_name = replace_wildcard(argin[2])
- argout = self.db.get_class_attribute_property_hist(class_name, attribute, prop_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributePropertyHist
- return argout
+ dev_name, attr_name = argin[:2]
-#------------------------------------------------------------------
-# DbGetClassForDevice command:
-#------------------------------------------------------------------
- def DbGetClassForDevice(self, argin):
- """ Get Tango class for the specified device.
-
- :param argin: Device name
- :type: PyTango.DevString
- :return: Device Tango class
- :rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetClassForDevice()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetClassForDevice) ENABLED START -----#
-
- argout = self.db.get_class_for_device(argin)
- print argout
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassForDevice
- return argout
-
-#------------------------------------------------------------------
-# DbGetClassInheritanceForDevice command:
-#------------------------------------------------------------------
- def DbGetClassInheritanceForDevice(self, argin):
- """ Get class inheritance for the specified device.
-
- :param argin: Device name
- :type: PyTango.DevString
- :return: Classes off the specified device.
- [0] - is the class of the device.
- [1] - is the class from the device class is inherited.
- ........and so on
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassInheritanceForDevice()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassInheritanceForDevice) ENABLED START -----#
+ ret, dev_name, dfm = check_device_name(argin)
+ if not ret:
+ self.warn_stream("DataBase::db_delete_device_attribute(): device name " + argin + " incorrect ")
+ th_exc(DB_IncorrectDeviceName,
+ "failed to delete device attribute, device name incorrect",
+ "DataBase::DeleteDeviceAttribute()")
- argout = self.db.get_class_inheritance_for_device(argin)
+ self.db.delete_device_attribute(dev_name, attr_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassInheritanceForDevice
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='MySql Select command', dtype_out='DevVarLongStringArray', doc_out='MySql Select command result\n - svalues : select results\n - lvalue[n] : =0 if svalue[n] is null else =1\n (last lvalue -1) is number of rows, (last lvalue) is number of fields')
+ def DbMySqlSelect(self, argin):
+ """ This is a very low level command.
+ It executes the specified SELECT command on TANGO database and returns its result without filter.
-#------------------------------------------------------------------
-# DbGetClassList command:
-#------------------------------------------------------------------
- def DbGetClassList(self, argin):
- """ Get Tango class list with a specified filter
-
- :param argin: Filter
+ :param argin: MySql Select command
:type: PyTango.DevString
- :return: Class list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassList) ENABLED START -----#
+ :return: MySql Select command result
+ - svalues : select results
+ - lvalue[n] : =0 if svalue[n] is null else =1
+ (last lvalue -1) is number of rows, (last lvalue) is number of fields
+ :rtype: PyTango.DevVarLongStringArray """
+ self._log.debug("In DbMySqlSelect()")
+ tmp_argin = argin.lower()
- server = replace_wildcard(argin)
- argout = self.db.get_class_list(server)
+ # Check if SELECT key is alread inside command
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassList
- return argout
+ cmd = argin
+ tmp_argin = argin.lower()
+ pos = tmp_argin.find('select')
+ if pos == -1:
+ cmd = "SELECT " + cmd
-#------------------------------------------------------------------
-# DbGetClassProperty command:
-#------------------------------------------------------------------
- def DbGetClassProperty(self, argin):
- """
-
- :param argin: Str[0] = Tango class
- Str[1] = Property name
- Str[2] = Property name
+ pos = tmp_argin.find(';')
+ if pos != -1 and len(tmp_argin) > (pos + 1):
+ th_exc(DB_IncorrectArguments,
+ "SQL command not valid: " + argin,
+ "DataBase::ExportDevice()")
+ return self.db.my_sql_select(cmd)
+
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value\n.....', doc_out='none')
+ def DbPutDeviceAttributeProperty(self, argin):
+ """ Create/Update device attribute property(ies) in database
+
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute number
+ Str[2] = Attribute name
+ Str[3] = Property number
+ Str[4] = Property name
+ Str[5] = Property value
+ .....
:type: PyTango.DevVarStringArray
- :return: Str[0] = Tango class
- Str[1] = Property number
- Str[2] = Property name
- Str[3] = Property value number (array case)
- Str[4] = Property value
- Str[n] = Propery value (array case)
- ....
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassProperty()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassProperty) ENABLED START -----#
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbPutDeviceAttributeProperty()")
+ device_name = argin[0]
+ nb_attributes = int(argin[1])
+ self.db.put_device_attribute_property(device_name, nb_attributes, argin[2:])
- class_name = argin[0]
- argout = self.db.get_class_property(class_name,argint[1:])
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassProperty
- return argout
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute name\nStr[n] = Attribute name', dtype_out=('str',), doc_out='Str[0] = Device name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value')
+ def DbGetDeviceAttributeProperty(self, argin):
+ """ Get device attribute property(ies) value
-#------------------------------------------------------------------
-# DbGetClassPropertyHist command:
-#------------------------------------------------------------------
- def DbGetClassPropertyHist(self, argin):
- """ Retrieve Tango class property history
-
- :param argin: Str[0] = Tango class
- Str[1] = Property name
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute name
+ Str[n] = Attribute name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Property name
- Str[1] = date
- Str[2] = Property value number (array case)
- Str[3] = Property value 1
- Str[n] = Property value n
+ :return: Str[0] = Device name
+ Str[1] = Attribute property number
+ Str[2] = Attribute property 1 name
+ Str[3] = Attribute property 1 value
+ Str[n + 1] = Attribute property 2 name
+ Str[n + 2] = Attribute property 2 value
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassPropertyHist()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassPropertyHist) ENABLED START -----#
-
- class_name = argin[0]
- prop_name = argin[1]
- argout = self.db.get_class_property_hist(class_name, prop_name)
+ self._log.debug("In DbGetDeviceAttributeProperty()")
+ dev_name = argin[0]
+ return self.db.get_device_attribute_property(dev_name, argin[1:])
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassPropertyHist
- return argout
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Object name\nStr[1] = filter', dtype_out=('str',), doc_out='Property name list')
+ def DbGetPropertyList(self, argin):
+ """ Get list of property defined for a free object and matching the
+ specified filter
-#------------------------------------------------------------------
-# DbGetClassPropertyList command:
-#------------------------------------------------------------------
- def DbGetClassPropertyList(self, argin):
- """ Get property list for a given Tango class with a specified filter
-
- :param argin: The filter
- :type: PyTango.DevString
+ :param argin: Str[0] = Object name
+ Str[1] = filter
+ :type: PyTango.DevVarStringArray
:return: Property name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetClassPropertyList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetClassPropertyList) ENABLED START -----#
- time_before = time.time()
- if not argin:
- argin = "%"
- else:
- argin = replace_wildcard(argin)
-
- argout = self.db.get_class_property_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbDeleteDeviceProperty")
-
+ self._log.debug("In DbGetPropertyList()")
+ object_name = argin[0]
+ wildcard = replace_wildcard(argin[1])
+ return self.db.get_property_list(object_name, wildcard)
- #----- PROTECTED REGION END -----# // DataBase.DbGetClassPropertyList
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='Device server process name', dtype_out=('str',), doc_out='Str[0] = Device name\nStr[1] = Tango class\nStr[n] = Device name\nStr[n + 1] = Tango class')
+ def DbGetDeviceClassList(self, argin):
+ """ Get Tango classes/device list embedded in a specific device server
-#------------------------------------------------------------------
-# DbGetDeviceAlias command:
-#------------------------------------------------------------------
- def DbGetDeviceAlias(self, argin):
- """ Return alias for device name if found.
-
- :param argin: The device name
+ :param argin: Device server process name
:type: PyTango.DevString
- :return: The alias found
- :rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAlias()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAlias) ENABLED START -----#
-
- ret, dev_name, dfm = check_device_name(argin)
- if not ret:
- th_exc(DB_IncorrectDeviceName,
- "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
- "DataBase::DbGetDeviceAlias()")
+ :return: Str[0] = Device name
+ Str[1] = Tango class
+ Str[n] = Device name
+ Str[n + 1] = Tango class
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceClassList()")
+ return self.db.get_device_class_list(argin)
- argout = self.db.get_device_alias(dev_name)
+ @command(dtype_in='str', doc_in='Device name', doc_out='none')
+ def DbUnExportDevice(self, argin):
+ """ Mark a device as non exported in database
+ :param argin: Device name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbUnExportDevice()")
+ dev_name = argin[0].lower()
+ self.db.unexport_device(dev_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAlias
- return argout
+ @command(dtype_in='str', doc_in='Alias name', dtype_out='str', doc_out='Device name')
+ def DbGetAliasDevice(self, argin):
+ """ Get device name from its alias.
-#------------------------------------------------------------------
-# DbGetDeviceAliasList command:
-#------------------------------------------------------------------
- def DbGetDeviceAliasList(self, argin):
- """ Get device alias name with a specific filter
-
- :param argin: The filter
+ :param argin: Alias name
:type: PyTango.DevString
- :return: Device alias list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAliasList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAliasList) ENABLED START -----#
+ :return: Device name
+ :rtype: PyTango.DevString """
+ self._log.debug("In DbGetAliasDevice()")
if not argin:
argin = "%"
else:
argin = replace_wildcard(argin)
+ return self.db.get_alias_device(argin)
- argout = self.db.get_device_alias_list(argin)
+ @command(dtype_in='str', doc_in='device name', doc_out='none')
+ def DbDeleteDevice(self, argin):
+ """ Delete a devcie from database
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAliasList
- return argout
+ :param argin: device name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteDevice()")
-#------------------------------------------------------------------
-# DbGetDeviceAttributeList command:
-#------------------------------------------------------------------
+ ret, dev_name, dfm = check_device_name(argin)
+ if not ret:
+ self.warn_stream("DataBase::db_delete_device(): device name " + argin + " incorrect ")
+ th_exc(DB_IncorrectDeviceName,
+ "failed to delete device, device name incorrect",
+ "DataBase::DeleteDevice()")
+ self.db.delete_device(dev_name)
+
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Wildcard', dtype_out=('str',), doc_out='attribute name list')
def DbGetDeviceAttributeList(self, argin):
""" Return list of attributes matching the wildcard
for the specified device
-
+
:param argin: Str[0] = Device name
Str[1] = Wildcard
:type: PyTango.DevVarStringArray
:return: attribute name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAttributeList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAttributeList) ENABLED START -----#
-
+ self._log.debug("In DbGetDeviceAttributeList()")
dev_name = argin[0]
wildcard = argin[1]
if not wildcard:
wildcard = "%"
else:
wildcard = replace_wildcard(wildcard)
+ return self.db.get_device_attribute_list(dev_name, wildcard)
- argout = self.db.get_device_attribute_list(dev_name, wildcard)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeList
- return argout
+ @command(dtype_in='str', doc_in='Host name', dtype_out=('str',), doc_out='Server info for all servers running on specified host')
+ def DbGetHostServersInfo(self, argin):
+ """ Get info about all servers running on specified host, name, mode and level
-#------------------------------------------------------------------
-# DbGetDeviceAttributeProperty command:
-#------------------------------------------------------------------
- def DbGetDeviceAttributeProperty(self, argin):
- """ Get device attribute property(ies) value
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute name
- Str[n] = Attribute name
- :type: PyTango.DevVarStringArray
- :return: Str[0] = Device name
- Str[1] = Attribute property number
- Str[2] = Attribute property 1 name
- Str[3] = Attribute property 1 value
- Str[n + 1] = Attribute property 2 name
- Str[n + 2] = Attribute property 2 value
+ :param argin: Host name
+ :type: PyTango.DevString
+ :return: Server info for all servers running on specified host
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAttributeProperty()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAttributeProperty) ENABLED START -----#
- time_before = time.time()
- dev_name = argin[0]
- argout = self.db.get_device_attribute_property(class_name, argin[1:])
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceAttributeProperty")
+ self._log.debug("In DbGetHostServersInfo()")
+ argin = replace_wildcard(argin)
+ return self.db.get_host_servers_info(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeProperty
- return argout
+ @command(dtype_in=('str',), doc_in='s[0] = old device server name (exec/instance)\ns[1] = new device server name (exec/instance)')
+ def DbRenameServer(self, argin):
+ """ Rename a device server process
-#------------------------------------------------------------------
-# DbGetDeviceAttributeProperty2 command:
-#------------------------------------------------------------------
- def DbGetDeviceAttributeProperty2(self, argin):
- """ Retrieve device attribute properties. This command has the possibility to retrieve
- device attribute properties which are arrays. It is not possible with the old
- DbGetDeviceAttributeProperty command. Nevertheless, the old command has not been
- deleted for compatibility reason
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute name
- Str[n] = Attribute name
+ :param argin: str[0] = old device server name (exec/instance)
+ str[1] = new device server name (exec/instance)
:type: PyTango.DevVarStringArray
- :return: Str[0] = Device name
- Str[1] = Attribute property number
- Str[2] = Attribute property 1 name
- Str[3] = Attribute property 1 value number (array case)
- Str[4] = Attribute property 1 value
- Str[n] = Attribute property 1 value (array case)
- Str[n + 1] = Attribute property 2 name
- Str[n + 2] = Attribute property 2 value number (array case)
- Str[n + 3] = Attribute property 2 value
- Str[n + m] = Attribute property 2 value (array case)
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAttributeProperty2()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAttributeProperty2) ENABLED START -----#
-
- time_before = time.time()
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbRenameServer()")
- dev_name = argin[0]
- argout = self.db.get_device_attribute_property2(class_name, argin[1:])
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceAttributeProperty2")
+ if len(argin) < 2:
+ self.warn_stream("DataBase::DbRenameServer(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments (two required: old name and new name",
+ "DataBase::DbRenameServer")
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeProperty2
- return argout
+ old_name = argin[0]
+ new_name = argin[1]
-#------------------------------------------------------------------
-# DbGetDeviceAttributePropertyHist command:
-#------------------------------------------------------------------
- def DbGetDeviceAttributePropertyHist(self, argin):
- """ Retrieve device attribute property history
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute name
- Str[2] = Property name
- :type: PyTango.DevVarStringArray
- :return: Str[0] = Attribute name
- Str[1] = Property name
- Str[2] = date
- Str[3] = Property value number (array case)
- Str[4] = Property value 1
- Str[n] = Property value n
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceAttributePropertyHist()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceAttributePropertyHist) ENABLED START -----#
+ if ('/' not in argin[0]) or ('/' not in argin[1]):
+ self.warn_stream("DataBase::DbRenameServer(): wrong syntax in command args ")
+ th_exc(DB_IncorrectArguments,
+ "Wrong syntax in command args (ds_exec_name/inst_name)",
+ "DataBase::DbRenameServer")
- dev_name = argin[0]
- attribute = replace_wildcard(argin[1])
- prop_name = replace_wildcard(argin[2])
- argout = self.db.get_device_attribute_property_hist(dev_name, attribute, prop_name)
+ self.db.rename_server(old_name, new_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributePropertyHist
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Host name list')
+ def DbGetHostList(self, argin):
+ """ Get host list with name matching the specified filter
-#------------------------------------------------------------------
-# DbGetDeviceClassList command:
-#------------------------------------------------------------------
- def DbGetDeviceClassList(self, argin):
- """ Get Tango classes/device list embedded in a specific device server
-
- :param argin: Device server process name
- :type: PyTango.DevString
- :return: Str[0] = Device name
- Str[1] = Tango class
- Str[n] = Device name
- Str[n + 1] = Tango class
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceClassList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceClassList) ENABLED START -----#
-
- time_before = time.time()
-
- argout = self.db.get_device_class_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceClassList")
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceClassList
- return argout
-
-#------------------------------------------------------------------
-# DbGetDeviceDomainList command:
-#------------------------------------------------------------------
- def DbGetDeviceDomainList(self, argin):
- """ Get list of device domain name matching the specified
-
- :param argin: The wildcard
+ :param argin: The filter
:type: PyTango.DevString
- :return: Device name domain list
+ :return: Host name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceDomainList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceDomainList) ENABLED START -----#
-
- time_before = time.time()
+ self._log.debug("In DbGetHostList()")
argin = replace_wildcard(argin)
- argout = self.db.get_device_domain_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceDomainList")
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceDomainList
- return argout
-
-#------------------------------------------------------------------
-# DbGetDeviceExportedList command:
-#------------------------------------------------------------------
- def DbGetDeviceExportedList(self, argin):
- """ Get a list of exported devices whose names satisfy the filter (wildcard is
-
- :param argin: filter
+ return self.db.get_host_list(argin)
+
+ @command(dtype_in='str', doc_in='Device name', dtype_out=('str',), doc_out='Classes off the specified device.\n[0] - is the class of the device.\n[1] - is the class from the device class is inherited.\n........and so on')
+ def DbGetClassInheritanceForDevice(self, argin):
+ """ Get class inheritance for the specified device.
+
+ :param argin: Device name
:type: PyTango.DevString
- :return: list of exported devices
+ :return: Classes off the specified device.
+ [0] - is the class of the device.
+ [1] - is the class from the device class is inherited.
+ ........and so on
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceExportedList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceExportedList) ENABLED START -----#
+ self._log.debug("In DbGetClassInheritanceForDevice()")
+ return self.db.get_class_inheritance_for_device(argin)
- time_before = time.time()
-
- argin = replace_wildcard(argin)
- argout = self.db.get_device_exported_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceExportedList")
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceExportedList
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='Device server name', doc_out='none')
+ def DbDeleteServer(self, argin):
+ """ Delete server from the database but dont delete device properties
-#------------------------------------------------------------------
-# DbGetDeviceFamilyList command:
-#------------------------------------------------------------------
- def DbGetDeviceFamilyList(self, argin):
- """ Get a list of device name families for device name matching the
- specified wildcard
-
- :param argin: The wildcard
+ :param argin: Device server name
:type: PyTango.DevString
- :return: Family list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceFamilyList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceFamilyList) ENABLED START -----#
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteServer()")
- time_before = time.time()
+ if '*' in argin or '%' in argin or not '/' in argin:
+ self.warn_stream("DataBase::db_delete_server(): server name " + argin + " incorrect ")
+ th_exc(DB_IncorrectServerName,
+ "failed to delete server, server name incorrect",
+ "DataBase::DeleteServer()")
- argin = replace_wildcard(argin)
- argout = self.db.get_device_family_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceFamilyList")
+ self.db.delete_server(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceFamilyList
- return argout
+ @command(dtype_in='str', doc_in='The attribute alias name', dtype_out='str', doc_out='The attribute name (device/attribute)')
+ def DbGetAttributeAlias(self, argin):
+ """ Get the attribute name for the given alias.
+ If alias not found in database, returns an empty string.
-#------------------------------------------------------------------
-# DbGetDeviceInfo command:
-#------------------------------------------------------------------
- def DbGetDeviceInfo(self, argin):
- """ Returns info from DbImportDevice and started/stopped dates.
-
- :param argin: Device name
+ :param argin: The attribute alias name
:type: PyTango.DevString
- :return: Str[0] = Device name
- Str[1] = CORBA IOR
- Str[2] = Device version
- Str[3] = Device Server name
- Str[4] = Device Server process host name
- Str[5] = Started date (or ? if not set)
- Str[6] = Stopped date (or ? if not set)
- Str[7] = Device class
-
- Lg[0] = Device exported flag
- Lg[1] = Device Server process PID (or -1 if not set)
- :rtype: PyTango.DevVarLongStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceInfo()")
- argout = [0], ['']
+ :return: The attribute name (device/attribute)
+ :rtype: PyTango.DevString """
+ self._log.debug("In DbGetAttributeAlias()")
+ return self.db.get_attribute_alias(argin)
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceInfo) ENABLED START -----#
- ret, dev_name, dfm = check_device_name(argin)
- if not ret:
- th_exc(DB_IncorrectDeviceName,
- "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
- "DataBase::DbGetDeviceAlias()")
+ @command(dtype_in=('str',), doc_in='Elt[0] = DS name (exec_name/inst_name), Elt[1] = Host name', dtype_out=('str',), doc_out='All the data needed by the device server during its startup sequence. Precise list depend on the device server')
+ def DbGetDataForServerCache(self, argin):
+ """ This command returns all the data needed by a device server process during its
+ startup sequence. The aim of this command is to minimize database access during
+ device server startup sequence.
- argout = self.db.get_device_info(dev_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceInfo
- return argout
+ :param argin: Elt[0] = DS name (exec_name/inst_name), Elt[1] = Host name
+ :type: PyTango.DevVarStringArray
+ :return: All the data needed by the device server during its startup sequence. Precise list depend on the device server
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDataForServerCache()")
+ ## TODO
+ return ['']
-#------------------------------------------------------------------
-# DbGetDeviceList command:
-#------------------------------------------------------------------
- def DbGetDeviceList(self, argin):
- """ Get a list of devices for specified server and class.
-
- :param argin: argin[0] : server name
- argin[1] : class name
+ @command(dtype_in=('str',), doc_in='Str[0] = Object name\nStr[1] = Property name\nStr[n] = Property name', dtype_out=('str',), doc_out='Str[0] = Object name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n (array case)\nStr[n + 1] = Property name\nStr[n + 2] = Property value number (array case)\nStr[n + 3] = Property value 1\nStr[n + m] = Property value m')
+ def DbGetProperty(self, argin):
+ """ Get free object property
+
+ :param argin: Str[0] = Object name
+ Str[1] = Property name
+ Str[n] = Property name
:type: PyTango.DevVarStringArray
- :return: The list of devices for specified server and class.
+ :return: Str[0] = Object name
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number (array case)
+ Str[4] = Property value 1
+ Str[n] = Property value n (array case)
+ Str[n + 1] = Property name
+ Str[n + 2] = Property value number (array case)
+ Str[n + 3] = Property value 1
+ Str[n + m] = Property value m
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceList) ENABLED START -----#
- server_name = replace_wildcard(argin[0])
- class_name = replace_wildcard(argin[1])
- argout = self.db.get_device_list(server_name, class_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceList
- return argout
-
-#------------------------------------------------------------------
-# DbGetDeviceWideList command:
-#------------------------------------------------------------------
- def DbGetDeviceWideList(self, argin):
- """ Get a list of devices whose names satisfy the filter.
-
- :param argin: filter
+ self._log.debug("In DbGetProperty()")
+ object_name = argin[0]
+ return self.db.get_property(object_name, argin[1:])
+
+ @command(dtype_in='str', doc_in='device server process name', dtype_out=('str',), doc_out='list of classes for this device server')
+ def DbGetDeviceServerClassList(self, argin):
+ """ Get list of Tango classes for a device server
+
+ :param argin: device server process name
:type: PyTango.DevString
- :return: list of exported devices
+ :return: list of classes for this device server
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceWideList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceWideList) ENABLED START -----#
-
+ self._log.debug("In DbGetDeviceServerClassList()")
argin = replace_wildcard(argin)
- argout = self.db.get_device_wide_list(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceWideList
- return argout
-
-#------------------------------------------------------------------
-# DbGetDeviceMemberList command:
-#------------------------------------------------------------------
- def DbGetDeviceMemberList(self, argin):
- """ Get a list of device name members for device name matching the
- specified filter
-
- :param argin: The filter
- :type: PyTango.DevString
- :return: Device names member list
+ return self.db.get_server_class_list(argin)
+
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango device name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n....', doc_out='none')
+ def DbPutDeviceProperty(self, argin):
+ """ Create / Update device property(ies)
+
+ :param argin: Str[0] = Tango device name
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number
+ Str[4] = Property value 1
+ Str[n] = Property value n
+ ....
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbPutDeviceProperty()")
+ device_name = argin[0]
+ nb_properties = int(argin[1])
+ self.db.put_device_property(device_name, nb_properties, argin[2:])
+
+ @command(doc_in='none', doc_out='none')
+ def ResetTimingValues(self):
+ """ Reset the timing attribute values.
+
+ :param :
+ :type: PyTango.DevVoid
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In ResetTimingValues()")
+ for tmp_timing in timing_maps.itervalues():
+ tmp_timing.average = 0.
+ tmp_timing.minimum = 0.
+ tmp_timing.maximum = 0.
+ tmp_timing.total_elapsed = 0.
+ tmp_timing.calls = 0.
+
+ @command(doc_in='none', dtype_out=('str',), doc_out='List of host:port with one element for each database server')
+ def DbGetCSDbServerList(self):
+ """ Get a list of host:port for all database server defined in the control system
+
+ :param :
+ :type: PyTango.DevVoid
+ :return: List of host:port with one element for each database server
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceMemberList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceMemberList) ENABLED START -----#
+ self._log.debug("In DbGetCSDbServerList()")
+ return self.db.get_csdb_server_list()
- time_before = time.time()
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n....', doc_out='none')
+ def DbPutClassProperty(self, argin):
+ """ Create / Update class property(ies)
- argin = replace_wildcard(argin)
- argout = self.db.get_device_member_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceMemberList")
+ :param argin: Str[0] = Tango class name
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number
+ Str[4] = Property value 1
+ Str[n] = Property value n
+ ....
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbPutClassProperty()")
+ class_name = argin[0]
+ nb_properties = int(argin[1])
+ self.db.put_class_property(class_name, properties, argin[2:])
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceMemberList
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='Device name (or alias)', dtype_out='DevVarLongStringArray', doc_out='Str[0] = device name\nStr[1] = CORBA IOR\nStr[2] = device version\nStr[3] = device server process name\nStr[4] = host name\nStr[5] = Tango class name\n\nLg[0] = Exported flag\nLg[1] = Device server process PID')
+ def DbImportDevice(self, argin):
+ """ Import a device from the database
+
+ :param argin: Device name (or alias)
+ :type: PyTango.DevString
+ :return: Str[0] = device name
+ Str[1] = CORBA IOR
+ Str[2] = device version
+ Str[3] = device server process name
+ Str[4] = host name
+ Str[5] = Tango class name
+
+ Lg[0] = Exported flag
+ Lg[1] = Device server process PID
+ :rtype: PyTango.DevVarLongStringArray """
+ self._log.debug("In DbImportDevice()")
+ return self.db.import_device(argin.lower())
+
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Property name\nStr[n] = Property name', doc_out='none')
+ def DbDeleteDeviceProperty(self, argin):
+ """ Delete device property(ies)
-#------------------------------------------------------------------
-# DbGetDeviceProperty command:
-#------------------------------------------------------------------
- def DbGetDeviceProperty(self, argin):
- """
-
:param argin: Str[0] = Device name
Str[1] = Property name
Str[n] = Property name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Device name
- Str[1] = Property number
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteDeviceProperty()")
+ dev_name = argin[0]
+ for prop_name in argin[1:]:
+ self.db.delete_device_property(dev_name, prop_name)
+
+ @command(dtype_in='str', doc_in='Device name', dtype_out='str', doc_out='Device Tango class')
+ def DbGetClassForDevice(self, argin):
+ """ Get Tango class for the specified device.
+
+ :param argin: Device name
+ :type: PyTango.DevString
+ :return: Device Tango class
+ :rtype: PyTango.DevString """
+ self._log.debug("In DbGetClassForDevice()")
+ return self.db.get_class_for_device(argin)
+
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute name\nStr[2] = Property name', dtype_out=('str',), doc_out='Str[0] = Attribute name\nStr[1] = Property name\nStr[2] = date\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n')
+ def DbGetDeviceAttributePropertyHist(self, argin):
+ """ Retrieve device attribute property history
+
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute name
Str[2] = Property name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Attribute name
+ Str[1] = Property name
+ Str[2] = date
Str[3] = Property value number (array case)
Str[4] = Property value 1
- Str[n] = Property value n (array case)
- Str[n + 1] = Property name
- Str[n + 2] = Property value number (array case)
- Str[n + 3] = Property value 1
- Str[n + m] = Property value m
+ Str[n] = Property value n
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceProperty()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceProperty) ENABLED START -----#
+ self._log.debug("In DbGetDeviceAttributePropertyHist()")
+ dev_name = argin[0]
+ attribute = replace_wildcard(argin[1])
+ prop_name = replace_wildcard(argin[2])
+ return self.db.get_device_attribute_property_hist(dev_name, attribute, prop_name)
- time_before = time.time()
+ @command(dtype_in='str', doc_in='server name', dtype_out=('str',), doc_out='server info')
+ def DbGetServerInfo(self, argin):
+ """ Get info about host, mode and level for specified server
- device_name = argin[0]
- argout = self.db.get_device_property(device_name, argin[1:])
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDeviceProperty")
+ :param argin: server name
+ :type: PyTango.DevString
+ :return: server info
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetServerInfo()")
+ return self.db.get_server_info(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceProperty
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = device name\nStr[1] = alias name', doc_out='none')
+ def DbPutDeviceAlias(self, argin):
+ """ Define alias for a given device name
-#------------------------------------------------------------------
-# DbGetDevicePropertyHist command:
-#------------------------------------------------------------------
- def DbGetDevicePropertyHist(self, argin):
- """ Retrieve device property history
-
- :param argin: Str[0] = Device name
- Str[1] = Property name
+ :param argin: Str[0] = device name
+ Str[1] = alias name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Property name
- Str[1] = date
- Str[2] = Property value number (array case)
- Str[3] = Property value 1
- Str[n] = Property value n
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDevicePropertyHist()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDevicePropertyHist) ENABLED START -----#
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbPutDeviceAlias()")
- device_name = argin[0]
- prop_name = argin[1]
- argout = self.db.get_device_property_hist(device_name, prop_name)
-
+ if len(argin) < 2:
+ self.warn_stream("DataBase::DbPutDeviceAlias(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments to put device alias",
+ "DataBase::DbPutDeviceAlias()")
- #----- PROTECTED REGION END -----# // DataBase.DbGetDevicePropertyHist
- return argout
+ device_name = argin[0]
+ device_alias = argin[1]
+ self.db.put_device_alias(device_name, device_alias)
-#------------------------------------------------------------------
-# DbGetDevicePropertyList command:
-#------------------------------------------------------------------
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = device name\nStr[1] = Filter', dtype_out=('str',), doc_out='Property name list')
def DbGetDevicePropertyList(self, argin):
""" Get property list belonging to the specified device and with
name matching the specified filter
-
+
:param argin: Str[0] = device name
Str[1] = Filter
:type: PyTango.DevVarStringArray
:return: Property name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDevicePropertyList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDevicePropertyList) ENABLED START -----#
-
- time_before = time.time()
-
+ self._log.debug("In DbGetDevicePropertyList()")
device_name = argin[0]
prop_filter = argin[1]
-
prop_filter = replace_wildcard(prop_filter)
-
- argout = self.db.get_device_property_list(device_name, prop_filter)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetDevicePropertyList")
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetDevicePropertyList
- return argout
-
-#------------------------------------------------------------------
-# DbGetDeviceServerClassList command:
-#------------------------------------------------------------------
- def DbGetDeviceServerClassList(self, argin):
- """ Get list of Tango classes for a device server
-
- :param argin: device server process name
- :type: PyTango.DevString
- :return: list of classes for this device server
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDeviceServerClassList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDeviceServerClassList) ENABLED START -----#
-
- argin = replace_wildcard(argin)
-
- argout = self.db.get_server_class_list(argin)
+ return self.db.get_device_property_list(device_name, prop_filter)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceServerClassList
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Device server process name list')
+ def DbGetHostServerList(self, argin):
+ """ Get list of device server process name running on host with name matching
+ the specified filter
-#------------------------------------------------------------------
-# DbGetExportdDeviceListForClass command:
-#------------------------------------------------------------------
- def DbGetExportdDeviceListForClass(self, argin):
- """ Query the database for device exported for the specified class.
-
- :param argin: Class name
+ :param argin: The filter
:type: PyTango.DevString
- :return: Device exported list
+ :return: Device server process name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetExportdDeviceListForClass()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetExportdDeviceListForClass) ENABLED START -----#
-
+ self._log.debug("In DbGetHostServerList()")
argin = replace_wildcard(argin)
-
- argout = self.db.get_exported_device_list_for_class(argin)
+ return self.db.get_host_server_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetExportdDeviceListForClass
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class\nStr[1] = Property name\nStr[2] = Property name', dtype_out=('str',), doc_out='Str[0] = Tango class\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value\nStr[n] = Propery value (array case)\n....')
+ def DbGetClassProperty(self, argin):
+ """
-#------------------------------------------------------------------
-# DbGetHostList command:
-#------------------------------------------------------------------
- def DbGetHostList(self, argin):
- """ Get host list with name matching the specified filter
-
- :param argin: The filter
- :type: PyTango.DevString
- :return: Host name list
+ :param argin: Str[0] = Tango class
+ Str[1] = Property name
+ Str[2] = Property name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Tango class
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number (array case)
+ Str[4] = Property value
+ Str[n] = Propery value (array case)
+ ....
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetHostList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetHostList) ENABLED START -----#
-
- time_before = time.time()
-
- argin = replace_wildcard(argin)
- argout = self.db.get_host_list(argin)
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetHostList")
+ self._log.debug("In DbGetClassProperty()")
+ class_name = argin[0]
+ return self.db.get_class_property(class_name,argin[1:])
- #----- PROTECTED REGION END -----# // DataBase.DbGetHostList
- return argout
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Object name list')
+ def DbGetObjectList(self, argin):
+ """ Get list of free object defined in database with name
+ matching the specified filter
-#------------------------------------------------------------------
-# DbGetHostServerList command:
-#------------------------------------------------------------------
- def DbGetHostServerList(self, argin):
- """ Get list of device server process name running on host with name matching
- the specified filter
-
:param argin: The filter
:type: PyTango.DevString
- :return: Device server process name list
+ :return: Object name list
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetHostServerList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetHostServerList) ENABLED START -----#
-
- time_before = time.time()
-
- argin = replace_wildcard(argin)
- argout = self.db.get_host_server_list(argin)
+ self._log.debug("In DbGetObjectList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_object_list(argin)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetHostServerList")
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute name\nStr[2] = Property name\nStr[n] = Property name', doc_out='none')
+ def DbDeleteClassAttributeProperty(self, argin):
+ """ delete class attribute properties from database
+ :param argin: Str[0] = Tango class name
+ Str[1] = Attribute name
+ Str[2] = Property name
+ Str[n] = Property name
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteClassAttributeProperty()")
- #----- PROTECTED REGION END -----# // DataBase.DbGetHostServerList
- return argout
+ if len(argin) < 3:
+ self.warn_stream("DataBase::db_delete_class_attribute_property(): insufficient number of arguments ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient number of arguments to delete class attribute property",
+ "DataBase::DeleteClassAttributeProperty()")
-#------------------------------------------------------------------
-# DbGetHostServersInfo command:
-#------------------------------------------------------------------
- def DbGetHostServersInfo(self, argin):
- """ Get info about all servers running on specified host, name, mode and level
-
- :param argin: Host name
- :type: PyTango.DevString
- :return: Server info for all servers running on specified host
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetHostServersInfo()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetHostServersInfo) ENABLED START -----#
-
- argin = replace_wildcard(argin)
-
- argout = self.db.get_host_servers_info(argin)
+ klass_name, attr_name = argin[:2]
- #----- PROTECTED REGION END -----# // DataBase.DbGetHostServersInfo
- return argout
+ for prop_name in argin[2:]:
+ self.db.delete_class_attribute_property(klass_name, attr_name, prop_name)
-#------------------------------------------------------------------
-# DbGetInstanceNameList command:
-#------------------------------------------------------------------
+ @command(dtype_in='str', doc_in='Server name', dtype_out=('str',), doc_out='The instance names found for specified server.')
def DbGetInstanceNameList(self, argin):
""" Returns the instance names found for specified server.
-
+
:param argin: Server name
:type: PyTango.DevString
:return: The instance names found for specified server.
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetInstanceNameList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetInstanceNameList) ENABLED START -----#
-
- argout = self.db.get_instance_name_list(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetInstanceNameList
- return argout
-
-#------------------------------------------------------------------
-# DbGetObjectList command:
-#------------------------------------------------------------------
- def DbGetObjectList(self, argin):
- """ Get list of free object defined in database with name
- matching the specified filter
-
- :param argin: The filter
+ self._log.debug("In DbGetInstanceNameList()")
+ return self.db.get_instance_name_list(argin)
+
+ @command(dtype_in='str', doc_in='The attribute name (dev_name/att_name)', dtype_out='str', doc_out='The attribute alias name (or empty string)')
+ def DbGetAttributeAlias2(self, argin):
+ """ Get the attribute alias from the attribute name.
+ Returns one empty string if nothing found in database
+
+ :param argin: The attribute name (dev_name/att_name)
:type: PyTango.DevString
- :return: Object name list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetObjectList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetObjectList) ENABLED START -----#
-
- argin = replace_wildcard(argin)
- argout = self.db.get_object_list(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetObjectList
- return argout
-
-#------------------------------------------------------------------
-# DbGetProperty command:
-#------------------------------------------------------------------
- def DbGetProperty(self, argin):
- """ Get free object property
-
- :param argin: Str[0] = Object name
- Str[1] = Property name
- Str[n] = Property name
+ :return: The attribute alias name (or empty string)
+ :rtype: PyTango.DevString """
+ self._log.debug("In DbGetAttributeAlias2()")
+ attr_name = argin[0]
+ return self.db.get_attribute_alias2(attr_name)
+
+ @command(dtype_in=('str',), doc_in='Str[0] = Full device server name\nStr[1] = Device(s) name\nStr[2] = Tango class name\nStr[n] = Device name\nStr[n + 1] = Tango class name', doc_out='none')
+ def DbAddServer(self, argin):
+ """ Create a device server process entry in database
+
+ :param argin: Str[0] = Full device server name
+ Str[1] = Device(s) name
+ Str[2] = Tango class name
+ Str[n] = Device name
+ Str[n + 1] = Tango class name
:type: PyTango.DevVarStringArray
- :return: Str[0] = Object name
- Str[1] = Property number
- Str[2] = Property name
- Str[3] = Property value number (array case)
- Str[4] = Property value 1
- Str[n] = Property value n (array case)
- Str[n + 1] = Property name
- Str[n + 2] = Property value number (array case)
- Str[n + 3] = Property value 1
- Str[n + m] = Property value m
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetProperty()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetProperty) ENABLED START -----#
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbAddServer()")
- object_name = argin[0]
- argout = self.db.get_property(object_name, argin[1:])
+ if len(argin) < 3 or not len(argin) % 2:
+ self.warn_stream("DataBase::AddServer(): incorrect number of input arguments ")
+ th_exc(DB_IncorrectArguments,
+ "incorrect no. of input arguments, needs at least 3 (server,device,class)",
+ "DataBase::AddServer()")
+ server_name = argin[0]
- #----- PROTECTED REGION END -----# // DataBase.DbGetProperty
- return argout
+ for i in range((len(argin) - 1) / 2):
+ d_name, klass_name = argin[i * 2 + 1], argin[i * 2 + 2]
+ ret, dev_name, dfm = check_device_name(d_name)
+ if not ret:
+ th_exc(DB_IncorrectDeviceName,
+ "device name (" + d_name + ") syntax error (should be [tango:][//instance/]domain/family/member)",
+ "DataBase::AddServer()")
+ self.db.add_device(server_name, (dev_name, dfm) , klass_name)
-#------------------------------------------------------------------
-# DbGetPropertyHist command:
-#------------------------------------------------------------------
- def DbGetPropertyHist(self, argin):
- """ Retrieve object property history
-
- :param argin: Str[0] = Object name
- Str[2] = Property name
+ @stats
+ @command(dtype_in='str', doc_in='name of event channel or factory', dtype_out='DevVarLongStringArray', doc_out='export information e.g. IOR')
+ def DbImportEvent(self, argin):
+ """ Get event channel info from database
+
+ :param argin: name of event channel or factory
+ :type: PyTango.DevString
+ :return: export information e.g. IOR
+ :rtype: PyTango.DevVarLongStringArray """
+ self._log.debug("In DbImportEvent()")
+ argin = replace_wildcard(argin.lower())
+ return self.db.import_event(argin)
+
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[2] = Property name', dtype_out=('str',), doc_out='Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n')
+ def DbGetDevicePropertyHist(self, argin):
+ """ Retrieve device property history
+
+ :param argin: Str[0] = Device name
+ Str[1] = Property name
:type: PyTango.DevVarStringArray
:return: Str[0] = Property name
Str[1] = date
@@ -1754,174 +1334,85 @@ class DataBase (PyTango.Device_4Impl):
Str[3] = Property value 1
Str[n] = Property value n
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetPropertyHist()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetPropertyHist) ENABLED START -----#
-
- object_name = argin[0]
+ self._log.debug("In DbGetDevicePropertyHist()")
+ device_name = argin[0]
prop_name = argin[1]
- argout = self.db.get_property_hist(object_name, prop_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetPropertyHist
- return argout
-
-#------------------------------------------------------------------
-# DbGetPropertyList command:
-#------------------------------------------------------------------
- def DbGetPropertyList(self, argin):
- """ Get list of property defined for a free object and matching the
- specified filter
-
- :param argin: Str[0] = Object name
- Str[1] = filter
- :type: PyTango.DevVarStringArray
- :return: Property name list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetPropertyList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetPropertyList) ENABLED START -----#
-
- object_name = argin[0]
- wildcard = replace_wildcard(argin[1])
-
- argout = self.db.get_property_list(object_name, wildcard)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetPropertyList
- return argout
-
-#------------------------------------------------------------------
-# DbGetServerInfo command:
-#------------------------------------------------------------------
- def DbGetServerInfo(self, argin):
- """ Get info about host, mode and level for specified server
-
- :param argin: server name
- :type: PyTango.DevString
- :return: server info
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetServerInfo()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetServerInfo) ENABLED START -----#
-
- argout = self.db.get_server_info(argin)
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetServerInfo
- return argout
-
-#------------------------------------------------------------------
-# DbGetServerList command:
-#------------------------------------------------------------------
- def DbGetServerList(self, argin):
- """ Get list of device server process defined in database
- with name matching the specified filter
-
- :param argin: The filter
- :type: PyTango.DevString
- :return: Device server process name list
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetServerList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetServerList) ENABLED START -----#
+ return self.db.get_device_property_hist(device_name, prop_name)
- time_before = time.time()
-
- argin = replace_wildcard(argin)
- argout = self.db.get_server_list(argin)
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbGetServerList")
-
- #----- PROTECTED REGION END -----# // DataBase.DbGetServerList
- return argout
-
-#------------------------------------------------------------------
-# DbGetServerNameList command:
-#------------------------------------------------------------------
+ @command(dtype_in='str', doc_in='wildcard for server names.', dtype_out=('str',), doc_out='server names found.')
def DbGetServerNameList(self, argin):
""" Returns the list of server names found for the wildcard specified.
It returns only the server executable name without instance name as DbGetServerList.
-
+
:param argin: wildcard for server names.
:type: PyTango.DevString
:return: server names found.
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetServerNameList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetServerNameList) ENABLED START ----
-
+ self._log.debug("In DbGetServerNameList()")
argin = replace_wildcard(argin)
- argout = self.db.get_server_name_list(argin)
+ return self.db.get_server_name_list(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetServerNameList
- return argout
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Attribute name\nStr[n] = Attribute name', dtype_out=('str',), doc_out='Str[0] = Device name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value number (array case)\nStr[4] = Attribute property 1 value\nStr[n] = Attribute property 1 value (array case)\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value number (array case)\nStr[n + 3] [...]
+ def DbGetDeviceAttributeProperty2(self, argin):
+ """ Retrieve device attribute properties. This command has the possibility to retrieve
+ device attribute properties which are arrays. It is not possible with the old
+ DbGetDeviceAttributeProperty command. Nevertheless, the old command has not been
+ deleted for compatibility reason
-#------------------------------------------------------------------
-# DbImportDevice command:
-#------------------------------------------------------------------
- def DbImportDevice(self, argin):
- """ Import a device from the database
-
- :param argin: Device name (or alias)
- :type: PyTango.DevString
- :return: Str[0] = device name
- Str[1] = CORBA IOR
- Str[2] = device version
- Str[3] = device server process name
- Str[4] = host name
- Str[5] = Tango class name
-
- Lg[0] = Exported flag
- Lg[1] = Device server process PID
- :rtype: PyTango.DevVarLongStringArray """
- self.debug_stream("In " + self.get_name() + ".DbImportDevice()")
- argout = [0], ['']
- #----- PROTECTED REGION ID(DataBase.DbImportDevice) ENABLED START -----#
-
- time_before = time.time()
-
- argout = self.db.import_device(argin.lower())
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbImportDevice")
-
- #----- PROTECTED REGION END -----# // DataBase.DbImportDevice
- return argout
-
-#------------------------------------------------------------------
-# DbImportEvent command:
-#------------------------------------------------------------------
- def DbImportEvent(self, argin):
- """ Get event channel info from database
-
- :param argin: name of event channel or factory
- :type: PyTango.DevString
- :return: export information e.g. IOR
- :rtype: PyTango.DevVarLongStringArray """
- self.debug_stream("In " + self.get_name() + ".DbImportEvent()")
- argout = [0], ['']
- #----- PROTECTED REGION ID(DataBase.DbImportEvent) ENABLED START -----#
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute name
+ Str[n] = Attribute name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Device name
+ Str[1] = Attribute property number
+ Str[2] = Attribute property 1 name
+ Str[3] = Attribute property 1 value number (array case)
+ Str[4] = Attribute property 1 value
+ Str[n] = Attribute property 1 value (array case)
+ Str[n + 1] = Attribute property 2 name
+ Str[n + 2] = Attribute property 2 value number (array case)
+ Str[n + 3] = Attribute property 2 value
+ Str[n + m] = Attribute property 2 value (array case)
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceAttributeProperty2()")
+ dev_name = argin[0]
+ return self.db.get_device_attribute_property2(dev_name, argin[1:])
- time_before = time.time()
-
- argin = replace_wildcard(argin.lower())
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Property name\nStr[n] = Property name', doc_out='none')
+ def DbDeleteClassProperty(self, argin):
+ """ Delete class properties from database
- argout = self.db.import_event(argin)
+ :param argin: Str[0] = Tango class name
+ Str[1] = Property name
+ Str[n] = Property name
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteClassProperty()")
+ klass_name = argin[0]
+ for prop_name in argin[1:]:
+ self.db.delete_class_property(prop_name)
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbImportEvent")
-
+ @command(dtype_in='str', doc_in='name of event channel or factory to unexport', doc_out='none')
+ def DbUnExportEvent(self, argin):
+ """ Mark one event channel as non exported in database
- #----- PROTECTED REGION END -----# // DataBase.DbImportEvent
- return argout
+ :param argin: name of event channel or factory to unexport
+ :type: PyTango.DevString
+ :return: none
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbUnExportEvent()")
+ event_name = argin[0].lower()
+ self.db.unexport_event(event_name)
-#------------------------------------------------------------------
-# DbInfo command:
-#------------------------------------------------------------------
+ @stats
+ @command(doc_in='none', dtype_out=('str',), doc_out='Miscellaneous info like:\n- Device defined in database\n- Device marked as exported in database\n- Device server process defined in database\n- Device server process marked as exported in database\n- Device properties defined in database\n- Class properties defined in database\n- Device attribute properties defined in database\n- Class attribute properties defined in database\n- Object properties defined in database')
def DbInfo(self):
""" Get miscellaneous numbers on information
stored in database
-
- :param :
+
+ :param :
:type: PyTango.DevVoid
:return: Miscellaneous info like:
- Device defined in database
@@ -1934,83 +1425,33 @@ class DataBase (PyTango.Device_4Impl):
- Class attribute properties defined in database
- Object properties defined in database
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbInfo()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbInfo) ENABLED START -----#
-
- time_before = time.time()
-
- argout = self.db.info()
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbInfo")
-
- #----- PROTECTED REGION END -----# // DataBase.DbInfo
- return argout
-
-#------------------------------------------------------------------
-# DbPutAttributeAlias command:
-#------------------------------------------------------------------
- def DbPutAttributeAlias(self, argin):
- """ Define an alias for an attribute
-
- :param argin: Str[0] = attribute name
- Str[1] = attribute alias
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutAttributeAlias()")
- #----- PROTECTED REGION ID(DataBase.DbPutAttributeAlias) ENABLED START -----#
-
- if len(argin) < 2:
- self.warn_stream("DataBase::DbPutAttributeAlias(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to put attribute alias",
- "DataBase::DbPutAttributeAlias()")
-
- attribute_name = argin[0]
- attribute_alias = argin[1]
- self.db.put_attribute_alias(attribute_name, attribute_alias)
+ self._log.debug("In DbInfo()")
+ return self.db.info()
- #----- PROTECTED REGION END -----# // DataBase.DbPutAttributeAlias
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute name\nStr[n] = Attribute name', dtype_out=('str',), doc_out='Str[0] = Tango class name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value')
+ def DbGetClassAttributeProperty(self, argin):
+ """ Get Tango class property(ies) value
-#------------------------------------------------------------------
-# DbPutClassAttributeProperty command:
-#------------------------------------------------------------------
- def DbPutClassAttributeProperty(self, argin):
- """ Create/Update class attribute property(ies) in database
-
:param argin: Str[0] = Tango class name
- Str[1] = Attribute number
- Str[2] = Attribute name
- Str[3] = Property number
- Str[4] = Property name
- Str[5] = Property value
- .....
+ Str[1] = Attribute name
+ Str[n] = Attribute name
:type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutClassAttributeProperty()")
- #----- PROTECTED REGION ID(DataBase.DbPutClassAttributeProperty) ENABLED START -----#
-
+ :return: Str[0] = Tango class name
+ Str[1] = Attribute property number
+ Str[2] = Attribute property 1 name
+ Str[3] = Attribute property 1 value
+ Str[n + 1] = Attribute property 2 name
+ Str[n + 2] = Attribute property 2 value
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassAttributeProperty()")
class_name = argin[0]
- nb_attributes = int(argin[1])
-
-
- self.info_stream("DataBase::DbPutClassAttributeProperty(): put " + str(nb_attributes) + " attributes for class " + class_name)
-
- self.db.put_class_attribute_property(class_name, nb_attributes, argin[2:])
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutClassAttributeProperty
+ return self.db.get_class_attribute_property(class_name, argin[1:])
-#------------------------------------------------------------------
-# DbPutClassAttributeProperty2 command:
-#------------------------------------------------------------------
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value number (array case)\nStr[5] = Property value 1\nStr[n] = Property value n (array case)\n.....', doc_out='none')
def DbPutClassAttributeProperty2(self, argin):
""" This command adds support for array properties compared to the previous one
called DbPutClassAttributeProperty. The old comman is still there for compatibility reason
-
+
:param argin: Str[0] = Tango class name
Str[1] = Attribute number
Str[2] = Attribute name
@@ -2021,225 +1462,22 @@ class DataBase (PyTango.Device_4Impl):
Str[n] = Property value n (array case)
.....
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutClassAttributeProperty2()")
- #----- PROTECTED REGION ID(DataBase.DbPutClassAttributeProperty2) ENABLED START -----#
+ self._log.debug("In DbPutClassAttributeProperty2()")
class_name = argin[0]
nb_attributes = int(argin[1])
-
- self.info_stream("DataBase::DbPutClassAttributeProperty2(): put " + str(nb_attributes) + " attributes for class " + class_name)
-
self.db.put_class_attribute_property2(class_name, nb_attributes, argin[2:])
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutClassAttributeProperty2
-
-#------------------------------------------------------------------
-# DbPutClassProperty command:
-#------------------------------------------------------------------
- def DbPutClassProperty(self, argin):
- """ Create / Update class property(ies)
-
- :param argin: Str[0] = Tango class name
- Str[1] = Property number
- Str[2] = Property name
- Str[3] = Property value number
- Str[4] = Property value 1
- Str[n] = Property value n
- ....
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutClassProperty()")
- #----- PROTECTED REGION ID(DataBase.DbPutClassProperty) ENABLED START -----#
-
- time_before = time.time()
-
- class_name = argin[0]
- nb_properties = int(argin[1])
-
- self.info_stream("DataBase::DbPutClassProperty(): put " + str(nb_properties) + " attributes for class " + class_name)
-
- self.db.put_class_property(class_name, properties, argin[2:])
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbPutClassProperty")
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutClassProperty
-
-#------------------------------------------------------------------
-# DbPutDeviceAlias command:
-#------------------------------------------------------------------
- def DbPutDeviceAlias(self, argin):
- """ Define alias for a given device name
-
- :param argin: Str[0] = device name
- Str[1] = alias name
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutDeviceAlias()")
- #----- PROTECTED REGION ID(DataBase.DbPutDeviceAlias) ENABLED START -----#
-
- if len(argin) < 2:
- self.warn_stream("DataBase::DbPutDeviceAlias(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to put device alias",
- "DataBase::DbPutDeviceAlias()")
-
- device_name = argin[0]
- device_alias = argin[1]
- self.db.put_device_alias(device_name, device_alias)
-
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutDeviceAlias
-
-#------------------------------------------------------------------
-# DbPutDeviceAttributeProperty command:
-#------------------------------------------------------------------
- def DbPutDeviceAttributeProperty(self, argin):
- """ Create/Update device attribute property(ies) in database
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute number
- Str[2] = Attribute name
- Str[3] = Property number
- Str[4] = Property name
- Str[5] = Property value
- .....
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutDeviceAttributeProperty()")
- #----- PROTECTED REGION ID(DataBase.DbPutDeviceAttributeProperty) ENABLED START -----#
- time_before = time.time()
-
- device_name = argin[0]
- nb_attributes = int(argin[1])
-
- self.info_stream("DataBase::DbPutDeviceAttributeProperty(): put " + str(nb_attributes) + " attributes for device " + device_name)
-
- self.db.put_device_attribute_property(device_name, nb_attributes, argin[2:])
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbPutDeviceAttributeProperty")
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutDeviceAttributeProperty
-
-#------------------------------------------------------------------
-# DbPutDeviceAttributeProperty2 command:
-#------------------------------------------------------------------
- def DbPutDeviceAttributeProperty2(self, argin):
- """ Put device attribute property. This command adds the possibility to have attribute property
- which are arrays. Not possible with the old DbPutDeviceAttributeProperty command.
- This old command is not deleted for compatibility reasons.
-
- :param argin: Str[0] = Device name
- Str[1] = Attribute number
- Str[2] = Attribute name
- Str[3] = Property number
- Str[4] = Property name
- Str[5] = Property value number (array case)
- Str[5] = Property value 1
- Str[n] = Property value n (array case)
- .....
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutDeviceAttributeProperty2()")
- #----- PROTECTED REGION ID(DataBase.DbPutDeviceAttributeProperty2) ENABLED START -----#
-
- time_before = time.time()
-
- device_name = argin[0]
- nb_attributes = int(argin[1])
-
- self.info_stream("DataBase::DbPutDeviceAttributeProperty2(): put " + str(nb_attributes) + " attributes for device " + device_name)
-
- self.db.put_device_attribute_property2(device_name, nb_attributes, argin[2:])
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbPutDeviceAttributeProperty2")
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutDeviceAttributeProperty2
-
-#------------------------------------------------------------------
-# DbPutDeviceProperty command:
-#------------------------------------------------------------------
- def DbPutDeviceProperty(self, argin):
- """ Create / Update device property(ies)
-
- :param argin: Str[0] = Tango device name
- Str[1] = Property number
- Str[2] = Property name
- Str[3] = Property value number
- Str[4] = Property value 1
- Str[n] = Property value n
- ....
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutDeviceProperty()")
- #----- PROTECTED REGION ID(DataBase.DbPutDeviceProperty) ENABLED START -----#
-
- time_before = time.time()
-
- device_name = argin[0]
- nb_properties = int(argin[1])
-
- self.info_stream("DataBase::DbPutDeviceProperty(): put " + str(nb_properties) + " attributes for device " + device_name)
-
- self.db.put_device_property(device_name, properties, argin[2:])
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbPutDeviceProperty")
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutDeviceProperty
-
-#------------------------------------------------------------------
-# DbPutProperty command:
-#------------------------------------------------------------------
- def DbPutProperty(self, argin):
- """ Create / Update free object property(ies)
-
- :param argin: Str[0] = Object name
- Str[1] = Property number
- Str[2] = Property name
- Str[3] = Property value number
- Str[4] = Property value 1
- Str[n] = Property value n
- ....
- :type: PyTango.DevVarStringArray
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutProperty()")
- #----- PROTECTED REGION ID(DataBase.DbPutProperty) ENABLED START -----#
-
- object_name = argin[0]
- nb_properties = int(argin[1])
-
- self.info_stream("DataBase::DbPutProperty(): put " + str(nb_properties) + " attributes for object " + object_name)
-
- self.db.put_property(object_name, properties, argin[2:])
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutProperty
-
-#------------------------------------------------------------------
-# DbPutServerInfo command:
-#------------------------------------------------------------------
+ @command(dtype_in=('str',), doc_in='server info', doc_out='none')
def DbPutServerInfo(self, argin):
""" Update server info including host, mode and level
-
+
:param argin: server info
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbPutServerInfo()")
- #----- PROTECTED REGION ID(DataBase.DbPutServerInfo) ENABLED START -----#
+ self._log.debug("In DbPutServerInfo()")
if len(argin) < 4:
self.warn_stream("DataBase::DbPutServerInfo(): insufficient number of arguments ")
@@ -2254,646 +1492,256 @@ class DataBase (PyTango.Device_4Impl):
tmp_extra = []
if len(argin) > 4:
tmp_extra = argin[4:]
-
- tmp_len = len(argin) - 1
- self.info_stream("DataBase::DbPutServerInfo(): put " + tmp_len + " export info for device " + tmp_server)
-
- self.db.put_server_info(tmp_server, tmp_host, tmp_mode, tmp_level, tmp_extra)
-
- #----- PROTECTED REGION END -----# // DataBase.DbPutServerInfo
-
-#------------------------------------------------------------------
-# DbUnExportDevice command:
-#------------------------------------------------------------------
- def DbUnExportDevice(self, argin):
- """ Mark a device as non exported in database
-
- :param argin: Device name
- :type: PyTango.DevString
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbUnExportDevice()")
- #----- PROTECTED REGION ID(DataBase.DbUnExportDevice) ENABLED START -----#
-
- dev_name = argin[0].lower()
-
- self.db.unexport_device(dev_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbUnExportDevice
-
-#------------------------------------------------------------------
-# DbUnExportEvent command:
-#------------------------------------------------------------------
- def DbUnExportEvent(self, argin):
- """ Mark one event channel as non exported in database
-
- :param argin: name of event channel or factory to unexport
- :type: PyTango.DevString
- :return: none
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbUnExportEvent()")
- #----- PROTECTED REGION ID(DataBase.DbUnExportEvent) ENABLED START -----#
-
- event_name = argin[0].lower()
-
- self.db.unexport_event(event_name)
-
- #----- PROTECTED REGION END -----# // DataBase.DbUnExportEvent
-
-#------------------------------------------------------------------
-# DbUnExportServer command:
-#------------------------------------------------------------------
- def DbUnExportServer(self, argin):
- """ Mark all devices belonging to a specified device server
- process as non exported
-
- :param argin: Device server name (executable/instance)
- :type: PyTango.DevString
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbUnExportServer()")
- #----- PROTECTED REGION ID(DataBase.DbUnExportServer) ENABLED START -----#
-
- time_before = time.time()
-
- server_name = argin[0].lower()
-
- self.db.unexport_server(server_name)
-
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbUnExportServer")
-
- #----- PROTECTED REGION END -----# // DataBase.DbUnExportServer
-
-#------------------------------------------------------------------
-# ResetTimingValues command:
-#------------------------------------------------------------------
- def ResetTimingValues(self):
- """ Reset the timing attribute values.
-
- :param :
- :type: PyTango.DevVoid
- :return:
- :rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".ResetTimingValues()")
- #----- PROTECTED REGION ID(DataBase.ResetTimingValues) ENABLED START -----#
- for tmp_timing in timing_maps.itervalues():
- tmp_timing.average = 0.
- tmp_timing.minimum = 0.
- tmp_timing.maximum = 0.
- tmp_timing.total_elapsed = 0.
- tmp_timing.calls = 0.
-
- #----- PROTECTED REGION END -----# // DataBase.ResetTimingValues
-
-#------------------------------------------------------------------
-# DbGetDataForServerCache command:
-#------------------------------------------------------------------
- def DbGetDataForServerCache(self, argin):
- """ This command returns all the data needed by a device server process during its
- startup sequence. The aim of this command is to minimize database access during
- device server startup sequence.
-
- :param argin: Elt[0] = DS name (exec_name/inst_name), Elt[1] = Host name
- :type: PyTango.DevVarStringArray
- :return: All the data needed by the device server during its startup sequence. Precise list depend on the device server
- :rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetDataForServerCache()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetDataForServerCache) ENABLED START -----#
- time_before = time.time()
+ tmp_len = len(argin) - 1
+ self.db.put_server_info(tmp_server, tmp_host, tmp_mode, tmp_level, tmp_extra)
- ## TODO
+ @command(dtype_in='str', doc_in='device alias name', doc_out='none')
+ def DbDeleteDeviceAlias(self, argin):
+ """ Delete a device alias.
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbDbGetDataForServerCache")
+ :param argin: device alias name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbDeleteDeviceAlias()")
+ self.db.delete_device_alias(argin)
- #----- PROTECTED REGION END -----# // DataBase.DbGetDataForServerCache
- return argout
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = event channel name (or factory name)\nStr[1] = CORBA IOR\nStr[2] = Notifd host name\nStr[3] = Notifd pid\nStr[4] = Notifd version', doc_out='none')
+ def DbExportEvent(self, argin):
+ """ Export Event channel to database
-#------------------------------------------------------------------
-# DbDeleteAllDeviceAttributeProperty command:
-#------------------------------------------------------------------
- def DbDeleteAllDeviceAttributeProperty(self, argin):
- """ Delete all attribute properties for the specified device attribute(s)
-
- :param argin: str[0] = device name
- Str[1]...str[n] = attribute name(s)
+ :param argin: Str[0] = event channel name (or factory name)
+ Str[1] = CORBA IOR
+ Str[2] = Notifd host name
+ Str[3] = Notifd pid
+ Str[4] = Notifd version
:type: PyTango.DevVarStringArray
- :return:
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbDeleteAllDeviceAttributeProperty()")
- #----- PROTECTED REGION ID(DataBase.DbDeleteAllDeviceAttributeProperty) ENABLED START -----#
+ self._log.debug("In DbExportEvent()")
- if len(argin) < 2:
- self.warn_stream("DataBase::DbDeleteAllDeviceAttributeProperty(): insufficient number of arguments ")
+ if len(argin) < 5:
+ self.warn_stream("DataBase::db_export_event(): insufficient export info for event ")
th_exc(DB_IncorrectArguments,
- "insufficient number of arguments to delete all device attribute(s) property",
- "DataBase::DbDeleteAllDeviceAttributeProperty()")
+ "insufficient export info for event",
+ "DataBase::ExportEvent()")
- dev_name = argin[0]
+ event, IOR, host, pid, version = argin[:5]
+ event = replace_wildcard(event.lower())
+ self.db.export_event(event, IOR, host, pid, version)
- ret, d_name, dfm = check_device_name(dev_name)
-
- if not ret:
- th_exc(DB_IncorrectDeviceName,
- "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
- "DataBase::DbDeleteAllDeviceAttributeProperty()")
+ @stats
+ @command(dtype_in=('str',), doc_in='Str[0] = Device name\nStr[1] = Property name\nStr[n] = Property name', dtype_out=('str',), doc_out='Str[0] = Device name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n (array case)\nStr[n + 1] = Property name\nStr[n + 2] = Property value number (array case)\nStr[n + 3] = Property value 1\nStr[n + m] = Property value m')
+ def DbGetDeviceProperty(self, argin):
+ """
- self.db.delete_all_device_attribute_property(dev_name, argin[1:])
+ :param argin: Str[0] = Device name
+ Str[1] = Property name
+ Str[n] = Property name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Device name
+ Str[1] = Property number
+ Str[2] = Property name
+ Str[3] = Property value number (array case)
+ Str[4] = Property value 1
+ Str[n] = Property value n (array case)
+ Str[n + 1] = Property name
+ Str[n + 2] = Property value number (array case)
+ Str[n + 3] = Property value 1
+ Str[n + m] = Property value m
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceProperty()")
+ device_name = argin[0]
+ return self.db.get_device_property(device_name, argin[1:])
- #----- PROTECTED REGION END -----# // DataBase.DbDeleteAllDeviceAttributeProperty
+ @command(dtype_in='str', doc_in='Device name', dtype_out='DevVarLongStringArray', doc_out='Str[0] = Device name\nStr[1] = CORBA IOR\nStr[2] = Device version\nStr[3] = Device Server name\nStr[4] = Device Server process host name\nStr[5] = Started date (or ? if not set)\nStr[6] = Stopped date (or ? if not set)\nStr[7] = Device class\n\nLg[0] = Device exported flag\nLg[1] = Device Server process PID (or -1 if not set)')
+ def DbGetDeviceInfo(self, argin):
+ """ Returns info from DbImportDevice and started/stopped dates.
-#------------------------------------------------------------------
-# DbMySqlSelect command:
-#------------------------------------------------------------------
- def DbMySqlSelect(self, argin):
- """ This is a very low level command.
- It executes the specified SELECT command on TANGO database and returns its result without filter.
-
- :param argin: MySql Select command
+ :param argin: Device name
:type: PyTango.DevString
- :return: MySql Select command result
- - svalues : select results
- - lvalue[n] : =0 if svalue[n] is null else =1
- (last lvalue -1) is number of rows, (last lvalue) is number of fields
- :rtype: PyTango.DevVarLongStringArray """
- self.debug_stream("In " + self.get_name() + ".DbMySqlSelect()")
- argout = [0], ['']
- #----- PROTECTED REGION ID(DataBase.DbMySqlSelect) ENABLED START -----#
-
- time_before = time.time()
-
- tmp_argin = argin.lower()
-
- # Check if SELECT key is alread inside command
-
- cmd = argin
- tmp_argin = argin.lower()
- pos = tmp_argin.find('select')
- if pos == -1:
- cmd = "SELECT " + cmd
+ :return: Str[0] = Device name
+ Str[1] = CORBA IOR
+ Str[2] = Device version
+ Str[3] = Device Server name
+ Str[4] = Device Server process host name
+ Str[5] = Started date (or ? if not set)
+ Str[6] = Stopped date (or ? if not set)
+ Str[7] = Device class
- pos = tmp_argin.find(';')
- if pos != -1 and len(tmp_argin) > (pos + 1):
- th_exc(DB_IncorrectArguments,
- "SQL command not valid: " + argin,
- "DataBase::ExportDevice()")
- logging.info("DataBase::db_my_sql_select(): \n %s" % cmd)
-
- argout = self.db.my_sql_select(cmd)
+ Lg[0] = Device exported flag
+ Lg[1] = Device Server process PID (or -1 if not set)
+ :rtype: PyTango.DevVarLongStringArray """
+ self._log.debug("In DbGetDeviceInfo()")
+ ret, dev_name, dfm = check_device_name(argin)
+ if not ret:
+ th_exc(DB_IncorrectDeviceName,
+ "device name (" + argin + ") syntax error (should be [tango:][//instance/]domain/family/member)",
+ "DataBase::DbGetDeviceAlias()")
- time_after = time.time()
- self.update_timing_stats(time_before, time_after, "DbMySqlSelect")
+ return self.db.get_device_info(dev_name)
- #----- PROTECTED REGION END -----# // DataBase.DbMySqlSelect
- return argout
+ @command(dtype_in=('str',), doc_in='Str[0] = Object name\nStr[2] = Property name', dtype_out=('str',), doc_out='Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n')
+ def DbGetPropertyHist(self, argin):
+ """ Retrieve object property history
-#------------------------------------------------------------------
-# DbGetCSDbServerList command:
-#------------------------------------------------------------------
- def DbGetCSDbServerList(self):
- """ Get a list of host:port for all database server defined in the control system
-
- :param :
- :type: PyTango.DevVoid
- :return: List of host:port with one element for each database server
+ :param argin: Str[0] = Object name
+ Str[2] = Property name
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Property name
+ Str[1] = date
+ Str[2] = Property value number (array case)
+ Str[3] = Property value 1
+ Str[n] = Property value n
:rtype: PyTango.DevVarStringArray """
- self.debug_stream("In " + self.get_name() + ".DbGetCSDbServerList()")
- argout = ['']
- #----- PROTECTED REGION ID(DataBase.DbGetCSDbServerList) ENABLED START -----#
-
- argout = self.db.get_csdb_server_list()
+ self._log.debug("In DbGetPropertyHist()")
+ object_name = argin[0]
+ prop_name = argin[1]
+ return self.db.get_property_hist(object_name, prop_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetCSDbServerList
- return argout
+ @stats
+ @command(dtype_in='str', doc_in='The filter', dtype_out=('str',), doc_out='Device names member list')
+ def DbGetDeviceMemberList(self, argin):
+ """ Get a list of device name members for device name matching the
+ specified filter
-#------------------------------------------------------------------
-# DbGetAttributeAlias2 command:
-#------------------------------------------------------------------
- def DbGetAttributeAlias2(self, argin):
- """ Get the attribute alias from the attribute name.
- Returns one empty string if nothing found in database
-
- :param argin: The attribute name (dev_name/att_name)
+ :param argin: The filter
:type: PyTango.DevString
- :return: The attribute alias name (or empty string)
- :rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetAttributeAlias2()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetAttributeAlias2) ENABLED START -----#
+ :return: Device names member list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceMemberList()")
+ argin = replace_wildcard(argin)
+ return self.db.get_device_member_list(argin)
- attr_name = argin[0]
- argout = self.db.get_attribute_alias2(attr_name)
+ @command(dtype_in='str', doc_in='Filter', dtype_out=('str',), doc_out='Class list')
+ def DbGetClassList(self, argin):
+ """ Get Tango class list with a specified filter
- #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAlias2
- return argout
+ :param argin: Filter
+ :type: PyTango.DevString
+ :return: Class list
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassList()")
+ server = replace_wildcard(argin)
+ return self.db.get_class_list(server)
-#------------------------------------------------------------------
-# DbGetAliasAttribute command:
-#------------------------------------------------------------------
+ @command(dtype_in='str', doc_in='The attribute alias', dtype_out='str', doc_out='The attribute name (dev_name/att_name)')
def DbGetAliasAttribute(self, argin):
""" Get the attribute name from the given alias.
If the given alias is not found in database, returns an empty string
-
+
:param argin: The attribute alias
:type: PyTango.DevString
:return: The attribute name (dev_name/att_name)
:rtype: PyTango.DevString """
- self.debug_stream("In " + self.get_name() + ".DbGetAliasAttribute()")
- argout = ''
- #----- PROTECTED REGION ID(DataBase.DbGetAliasAttribute) ENABLED START -----#
-
+ self._log.debug("In DbGetAliasAttribute()")
alias_name = argin[0]
- argout = self.db.get_alias_attribute(alias_name)
+ return self.db.get_alias_attribute(alias_name)
- #----- PROTECTED REGION END -----# // DataBase.DbGetAliasAttribute
- return argout
+ @command(dtype_in='str', doc_in='Device server name', doc_out='none')
+ def DbDeleteServerInfo(self, argin):
+ """ delete info related to a Tango devvice server process
-#------------------------------------------------------------------
-# DbRenameServer command:
-#------------------------------------------------------------------
- def DbRenameServer(self, argin):
- """ Rename a device server process
-
- :param argin: str[0] = old device server name (exec/instance)
- str[1] = new device server name (exec/instance)
- :type: PyTango.DevVarStringArray
- :return:
+ :param argin: Device server name
+ :type: PyTango.DevString
+ :return:
:rtype: PyTango.DevVoid """
- self.debug_stream("In " + self.get_name() + ".DbRenameServer()")
- #----- PROTECTED REGION ID(DataBase.DbRenameServer) ENABLED START -----#
+ self._log.debug("In DbDeleteServerInfo()")
+ self.db.delete_server_info(argin)
- if len(argin) < 2:
- self.warn_stream("DataBase::DbRenameServer(): insufficient number of arguments ")
- th_exc(DB_IncorrectArguments,
- "insufficient number of arguments (two required: old name and new name",
- "DataBase::DbRenameServer")
-
+ @command(dtype_in=('str',), doc_in='Str[0] = Tango class name\nStr[1] = Attribute name filter (eg: att*)', dtype_out=('str',), doc_out='Str[0] = Class attribute name\nStr[n] = Class attribute name')
+ def DbGetClassAttributeList(self, argin):
+ """ Get attrilute list for a given Tango class with a specified filter
- old_name = argin[0]
- new_name = argin[1]
-
- if ('/' not in argin[0]) or ('/' not in argin[1]):
- self.warn_stream("DataBase::DbRenameServer(): wrong syntax in command args ")
- th_exc(DB_IncorrectArguments,
- "Wrong syntax in command args (ds_exec_name/inst_name)",
- "DataBase::DbRenameServer")
+ :param argin: Str[0] = Tango class name
+ Str[1] = Attribute name filter (eg: att*)
+ :type: PyTango.DevVarStringArray
+ :return: Str[0] = Class attribute name
+ Str[n] = Class attribute name
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetClassAttributeList()")
+ class_name = argin[0]
+ wildcard = replace_wildcard(argin[1])
+ return self.db.get_class_attribute_list(class_name, wildcard)
- self.db.rename_server(old_name, new_name)
-
-
-
- #----- PROTECTED REGION END -----# // DataBase.DbRenameServer
-
-#==================================================================
-#
-# DataBaseClass class definition
-#
-#==================================================================
-class DataBaseClass(PyTango.DeviceClass):
-
- # Class Properties
- class_property_list = {
- }
-
-
- # Device Properties
- device_property_list = {
- }
-
-
- # Command definitions
- cmd_list = {
- 'DbAddDevice':
- [[PyTango.DevVarStringArray, "Str[0] = Full device server process name\nStr[1] = Device name\nStr[2] = Tango class name"],
- [PyTango.DevVoid, "none"]],
- 'DbAddServer':
- [[PyTango.DevVarStringArray, "Str[0] = Full device server name\nStr[1] = Device(s) name\nStr[2] = Tango class name\nStr[n] = Device name\nStr[n + 1] = Tango class name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteAttributeAlias':
- [[PyTango.DevString, "Attriibute alias name."],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteClassAttribute':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteClassAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute name\nStr[2] = Property name\nStr[n] = Property name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteClassProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Property name\nStr[n] = Property name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteDevice':
- [[PyTango.DevString, "device name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteDeviceAlias':
- [[PyTango.DevString, "device alias name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteDeviceAttribute':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteDeviceAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute name\nStr[2] = Property name\nStr[n] = Property name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteDeviceProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Property name\nStr[n] = Property name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Object name\nStr[1] = Property name\nStr[n] = Property name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteServer':
- [[PyTango.DevString, "Device server name"],
- [PyTango.DevVoid, "none"]],
- 'DbDeleteServerInfo':
- [[PyTango.DevString, "Device server name"],
- [PyTango.DevVoid, "none"]],
- 'DbExportDevice':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = CORBA IOR\nStr[2] = Device server process host name\nStr[3] = Device server process PID or string ``null``\nStr[4] = Device server process version"],
- [PyTango.DevVoid, "none"]],
- 'DbExportEvent':
- [[PyTango.DevVarStringArray, "Str[0] = event channel name (or factory name)\nStr[1] = CORBA IOR\nStr[2] = Notifd host name\nStr[3] = Notifd pid\nStr[4] = Notifd version"],
- [PyTango.DevVoid, "none"]],
- 'DbGetAliasDevice':
- [[PyTango.DevString, "Alias name"],
- [PyTango.DevString, "Device name"]],
- 'DbGetAttributeAlias':
- [[PyTango.DevString, "The attribute alias name"],
- [PyTango.DevString, "The attribute name (device/attribute)"]],
- 'DbGetAttributeAliasList':
- [[PyTango.DevString, "attribute alias filter string (eg: att*)"],
- [PyTango.DevVarStringArray, "attribute aliases"]],
- 'DbGetClassAttributeList':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute name filter (eg: att*)"],
- [PyTango.DevVarStringArray, "Str[0] = Class attribute name\nStr[n] = Class attribute name"]],
- 'DbGetClassAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute name\nStr[n] = Attribute name"],
- [PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value"]],
- 'DbGetClassAttributeProperty2':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute name\nStr[n] = Attribute name"],
- [PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value number (array case)\nStr[4] = Attribute property 1 value\nStr[n] = Attribute property 1 value (array case)\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value number (array case)\nStr[n + 3] = Attribute property 2 value\nStr[n + m] = Attribute property 2 value (array case)"]],
- 'DbGetClassAttributePropertyHist':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class\nStr[1] = Attribute name\nStr[2] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Attribute name\nStr[1] = Property name\nStr[2] = date\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n"]],
- 'DbGetClassForDevice':
- [[PyTango.DevString, "Device name"],
- [PyTango.DevString, "Device Tango class"]],
- 'DbGetClassInheritanceForDevice':
- [[PyTango.DevString, "Device name"],
- [PyTango.DevVarStringArray, "Classes off the specified device.\n[0] - is the class of the device.\n[1] - is the class from the device class is inherited.\n........and so on"]],
- 'DbGetClassList':
- [[PyTango.DevString, "Filter"],
- [PyTango.DevVarStringArray, "Class list"]],
- 'DbGetClassProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class\nStr[1] = Property name\nStr[2] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Tango class\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value\nStr[n] = Propery value (array case)\n...."]],
- 'DbGetClassPropertyHist':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class\nStr[1] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n"]],
- 'DbGetClassPropertyList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Property name list"]],
- 'DbGetDeviceAlias':
- [[PyTango.DevString, "The device name"],
- [PyTango.DevString, "The alias found"]],
- 'DbGetDeviceAliasList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Device alias list"]],
- 'DbGetDeviceAttributeList':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Wildcard"],
- [PyTango.DevVarStringArray, "attribute name list"]],
- 'DbGetDeviceAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute name\nStr[n] = Attribute name"],
- [PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value"]],
- 'DbGetDeviceAttributeProperty2':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute name\nStr[n] = Attribute name"],
- [PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute property number\nStr[2] = Attribute property 1 name\nStr[3] = Attribute property 1 value number (array case)\nStr[4] = Attribute property 1 value\nStr[n] = Attribute property 1 value (array case)\nStr[n + 1] = Attribute property 2 name\nStr[n + 2] = Attribute property 2 value number (array case)\nStr[n + 3] = Attribute property 2 value\nStr[n + m] = Attribute property 2 value (array case)"]],
- 'DbGetDeviceAttributePropertyHist':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute name\nStr[2] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Attribute name\nStr[1] = Property name\nStr[2] = date\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n"]],
- 'DbGetDeviceClassList':
- [[PyTango.DevString, "Device server process name"],
- [PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Tango class\nStr[n] = Device name\nStr[n + 1] = Tango class"]],
- 'DbGetDeviceDomainList':
- [[PyTango.DevString, "The wildcard"],
- [PyTango.DevVarStringArray, "Device name domain list"]],
- 'DbGetDeviceExportedList':
- [[PyTango.DevString, "filter"],
- [PyTango.DevVarStringArray, "list of exported devices"]],
- 'DbGetDeviceFamilyList':
- [[PyTango.DevString, "The wildcard"],
- [PyTango.DevVarStringArray, "Family list"]],
- 'DbGetDeviceInfo':
- [[PyTango.DevString, "Device name"],
- [PyTango.DevVarLongStringArray, "Str[0] = Device name\nStr[1] = CORBA IOR\nStr[2] = Device version\nStr[3] = Device Server name\nStr[4] = Device Server process host name\nStr[5] = Started date (or ? if not set)\nStr[6] = Stopped date (or ? if not set)\nStr[7] = Device class\n\nLg[0] = Device exported flag\nLg[1] = Device Server process PID (or -1 if not set)"]],
- 'DbGetDeviceList':
- [[PyTango.DevVarStringArray, "argin[0] : server name\nargin[1] : class name"],
- [PyTango.DevVarStringArray, "The list of devices for specified server and class."]],
- 'DbGetDeviceWideList':
- [[PyTango.DevString, "filter"],
- [PyTango.DevVarStringArray, "list of exported devices"]],
- 'DbGetDeviceMemberList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Device names member list"]],
- 'DbGetDeviceProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Property name\nStr[n] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n (array case)\nStr[n + 1] = Property name\nStr[n + 2] = Property value number (array case)\nStr[n + 3] = Property value 1\nStr[n + m] = Property value m"]],
- 'DbGetDevicePropertyHist':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[2] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n"]],
- 'DbGetDevicePropertyList':
- [[PyTango.DevVarStringArray, "Str[0] = device name\nStr[1] = Filter"],
- [PyTango.DevVarStringArray, "Property name list"]],
- 'DbGetDeviceServerClassList':
- [[PyTango.DevString, "device server process name"],
- [PyTango.DevVarStringArray, "list of classes for this device server"]],
- 'DbGetExportdDeviceListForClass':
- [[PyTango.DevString, "Class name"],
- [PyTango.DevVarStringArray, "Device exported list"]],
- 'DbGetHostList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Host name list"]],
- 'DbGetHostServerList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Device server process name list"]],
- 'DbGetHostServersInfo':
- [[PyTango.DevString, "Host name"],
- [PyTango.DevVarStringArray, "Server info for all servers running on specified host"]],
- 'DbGetInstanceNameList':
- [[PyTango.DevString, "Server name"],
- [PyTango.DevVarStringArray, "The instance names found for specified server."]],
- 'DbGetObjectList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Object name list"]],
- 'DbGetProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Object name\nStr[1] = Property name\nStr[n] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Object name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number (array case)\nStr[4] = Property value 1\nStr[n] = Property value n (array case)\nStr[n + 1] = Property name\nStr[n + 2] = Property value number (array case)\nStr[n + 3] = Property value 1\nStr[n + m] = Property value m"]],
- 'DbGetPropertyHist':
- [[PyTango.DevVarStringArray, "Str[0] = Object name\nStr[2] = Property name"],
- [PyTango.DevVarStringArray, "Str[0] = Property name\nStr[1] = date\nStr[2] = Property value number (array case)\nStr[3] = Property value 1\nStr[n] = Property value n"]],
- 'DbGetPropertyList':
- [[PyTango.DevVarStringArray, "Str[0] = Object name\nStr[1] = filter"],
- [PyTango.DevVarStringArray, "Property name list"]],
- 'DbGetServerInfo':
- [[PyTango.DevString, "server name"],
- [PyTango.DevVarStringArray, "server info"]],
- 'DbGetServerList':
- [[PyTango.DevString, "The filter"],
- [PyTango.DevVarStringArray, "Device server process name list"]],
- 'DbGetServerNameList':
- [[PyTango.DevString, "wildcard for server names."],
- [PyTango.DevVarStringArray, "server names found."]],
- 'DbImportDevice':
- [[PyTango.DevString, "Device name (or alias)"],
- [PyTango.DevVarLongStringArray, "Str[0] = device name\nStr[1] = CORBA IOR\nStr[2] = device version\nStr[3] = device server process name\nStr[4] = host name\nStr[5] = Tango class name\n\nLg[0] = Exported flag\nLg[1] = Device server process PID"]],
- 'DbImportEvent':
- [[PyTango.DevString, "name of event channel or factory"],
- [PyTango.DevVarLongStringArray, "export information e.g. IOR"]],
- 'DbInfo':
- [[PyTango.DevVoid, "none"],
- [PyTango.DevVarStringArray, "Miscellaneous info like:\n- Device defined in database\n- Device marked as exported in database\n- Device server process defined in database\n- Device server process marked as exported in database\n- Device properties defined in database\n- Class properties defined in database\n- Device attribute properties defined in database\n- Class attribute properties defined in database\n- Object properties defined in database"]],
- 'DbPutAttributeAlias':
- [[PyTango.DevVarStringArray, "Str[0] = attribute name\nStr[1] = attribute alias"],
- [PyTango.DevVoid, "none"]],
- 'DbPutClassAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value\n....."],
- [PyTango.DevVoid, "none"]],
- 'DbPutClassAttributeProperty2':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value number (array case)\nStr[5] = Property value 1\nStr[n] = Property value n (array case)\n....."],
- [PyTango.DevVoid, "none"]],
- 'DbPutClassProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango class name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n...."],
- [PyTango.DevVoid, "none"]],
- 'DbPutDeviceAlias':
- [[PyTango.DevVarStringArray, "Str[0] = device name\nStr[1] = alias name"],
- [PyTango.DevVoid, "none"]],
- 'DbPutDeviceAttributeProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value\n....."],
- [PyTango.DevVoid, "none"]],
- 'DbPutDeviceAttributeProperty2':
- [[PyTango.DevVarStringArray, "Str[0] = Device name\nStr[1] = Attribute number\nStr[2] = Attribute name\nStr[3] = Property number\nStr[4] = Property name\nStr[5] = Property value number (array case)\nStr[5] = Property value 1\nStr[n] = Property value n (array case)\n....."],
- [PyTango.DevVoid, "none"]],
- 'DbPutDeviceProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Tango device name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n...."],
- [PyTango.DevVoid, "none"]],
- 'DbPutProperty':
- [[PyTango.DevVarStringArray, "Str[0] = Object name\nStr[1] = Property number\nStr[2] = Property name\nStr[3] = Property value number\nStr[4] = Property value 1\nStr[n] = Property value n\n...."],
- [PyTango.DevVoid, "none"]],
- 'DbPutServerInfo':
- [[PyTango.DevVarStringArray, "server info"],
- [PyTango.DevVoid, "none"]],
- 'DbUnExportDevice':
- [[PyTango.DevString, "Device name"],
- [PyTango.DevVoid, "none"]],
- 'DbUnExportEvent':
- [[PyTango.DevString, "name of event channel or factory to unexport"],
- [PyTango.DevVoid, "none"]],
- 'DbUnExportServer':
- [[PyTango.DevString, "Device server name (executable/instance)"],
- [PyTango.DevVoid, "none"]],
- 'ResetTimingValues':
- [[PyTango.DevVoid, "none"],
- [PyTango.DevVoid, "none"]],
- 'DbGetDataForServerCache':
- [[PyTango.DevVarStringArray, "Elt[0] = DS name (exec_name/inst_name), Elt[1] = Host name"],
- [PyTango.DevVarStringArray, "All the data needed by the device server during its startup sequence. Precise list depend on the device server"]],
- 'DbDeleteAllDeviceAttributeProperty':
- [[PyTango.DevVarStringArray, "str[0] = device name\nStr[1]...str[n] = attribute name(s)"],
- [PyTango.DevVoid, "none"]],
- 'DbMySqlSelect':
- [[PyTango.DevString, "MySql Select command"],
- [PyTango.DevVarLongStringArray, "MySql Select command result\n - svalues : select results\n - lvalue[n] : =0 if svalue[n] is null else =1\n (last lvalue -1) is number of rows, (last lvalue) is number of fields"]],
- 'DbGetCSDbServerList':
- [[PyTango.DevVoid, "none"],
- [PyTango.DevVarStringArray, "List of host:port with one element for each database server"]],
- 'DbGetAttributeAlias2':
- [[PyTango.DevString, "The attribute name (dev_name/att_name)"],
- [PyTango.DevString, "The attribute alias name (or empty string)"]],
- 'DbGetAliasAttribute':
- [[PyTango.DevString, "The attribute alias"],
- [PyTango.DevString, "The attribute name (dev_name/att_name)"]],
- 'DbRenameServer':
- [[PyTango.DevVoid, "none"],
- [PyTango.DevVarStringArray, "s[0] = old device server name (exec/instance)\ns[1] = new device server name (exec/instance)"]],
- }
-
-
- # Attribute definitions
- attr_list = {
- 'StoredProcedureRelease':
- [[PyTango.DevString,
- PyTango.SCALAR,
- PyTango.READ]],
- 'Timing_average':
- [[PyTango.DevDouble,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- 'Timing_minimum':
- [[PyTango.DevDouble,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- 'Timing_maximum':
- [[PyTango.DevDouble,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- 'Timing_calls':
- [[PyTango.DevDouble,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- 'Timing_index':
- [[PyTango.DevString,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- 'Timing_info':
- [[PyTango.DevString,
- PyTango.SPECTRUM,
- PyTango.READ, 64]],
- }
-
-
-#------------------------------------------------------------------
-# DataBaseClass Constructor
-#------------------------------------------------------------------
- def __init__(self, name):
- PyTango.DeviceClass.__init__(self, name)
- self.set_type(name);
-
- def device_factory(self, names):
- names = [get_db_name()]
- return PyTango.DeviceClass.device_factory(self, names)
+ @command(dtype_in=('str',), doc_in='Str[0] = Full device server process name\nStr[1] = Device name\nStr[2] = Tango class name', doc_out='none')
+ def DbAddDevice(self, argin):
+ """ Add a Tango class device to a specific device server
- def device_factory(self, device_list):
- """for internal usage only"""
+ :param argin: Str[0] = Full device server process name
+ Str[1] = Device name
+ Str[2] = Tango class name
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbAddDevice()")
- dev_name = get_db_name()
-
- klass = self.__class__
- klass_name = klass.__name__
- info, klass = get_class_by_class(klass), get_constructed_class_by_class(klass)
-
- if info is None:
- raise RuntimeError("Device class '%s' is not registered" % klass_name)
+ if len(argin) < 3:
+ self.warn_stream("DataBase::AddDevice(): incorrect number of input arguments ")
+ th_exc(DB_IncorrectArguments,
+ "incorrect no. of input arguments, needs at least 3 (server,device,class)",
+ "DataBase::AddDevice()")
- if klass is None:
- raise RuntimeError("Device class '%s' as not been constructed" % klass_name)
-
- deviceClassClass, deviceImplClass, deviceImplName = info
- deviceImplClass._device_class_instance = klass
+ self.info_stream("DataBase::AddDevice(): insert %s server with device %s",argin[0],argin[1])
+ server_name, d_name, klass_name = argin[:3]
+ if len(argin) > 3:
+ alias = argin[3]
+ else:
+ alias = None
- device = deviceImplClass(klass, dev_name)
- self._add_device(device)
- tmp_dev_list = [device]
+ ret, dev_name, dfm = check_device_name(d_name)
+ if not ret:
+ th_exc(DB_IncorrectDeviceName,
+ "device name (" + d_name + ") syntax error (should be [tango:][//instance/]domain/family/member)",
+ "DataBase::AddDevice()")
+ # Lock table
+ self.db.add_device(server_name, (dev_name, dfm) , klass_name, alias=alias)
+
+ @command(dtype_in=('str',), doc_in='argin[0] : server name\nargin[1] : class name', dtype_out=('str',), doc_out='The list of devices for specified server and class.')
+ def DbGetDeviceList(self, argin):
+ """ Get a list of devices for specified server and class.
+
+ :param argin: argin[0] : server name
+ argin[1] : class name
+ :type: PyTango.DevVarStringArray
+ :return: The list of devices for specified server and class.
+ :rtype: PyTango.DevVarStringArray """
+ self._log.debug("In DbGetDeviceList()")
+ server_name = replace_wildcard(argin[0])
+ class_name = replace_wildcard(argin[1])
+ return self.db.get_device_list(server_name, class_name)
+
+
+# DbExportDevice is executed in the post_init_cb function below.
+# It needs to be separated from the actual device to prevent the device in
+# gevent mode to queue the request to the gevent thread and waitting for it.
+def DbExportDevice(self, argin):
+ """ Export a device to the database
+
+ :param argin: Str[0] = Device name
+ Str[1] = CORBA IOR
+ Str[2] = Device server process host name
+ Str[3] = Device server process PID or string ``null``
+ Str[4] = Device server process version
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self._log.debug("In DbExportDevice()")
+ if len(argin) < 5:
+ self.warn_stream("DataBase::DbExportDevice(): insufficient export info for device ")
+ th_exc(DB_IncorrectArguments,
+ "insufficient export info for device",
+ "DataBase::ExportDevice()")
+
+ dev_name, IOR, host, pid, version = argin[:5]
+ dev_name = dev_name.lower()
+ if pid.lower() == 'null':
+ pid = "-1"
+ self.db.export_device(dev_name, IOR, host, pid, version)
- self.dyn_attr(tmp_dev_list)
- self.export_device(device, "database")
- self.py_dev_list += tmp_dev_list
-
-#==================================================================
-#
-# DataBase class main method
-#
-#==================================================================
def main():
#Parameters management
global options
@@ -2903,6 +1751,8 @@ def main():
help="database type")
parser.add_argument("-e", "--embedded",dest="embedded",default=False,
action="store_true")
+ parser.add_argument("--logging_level","-l",dest="logging_level",type=int,
+ default=0,help="logging_level 0:WARNING,1:INFO,2:DEBUG")
parser.add_argument('argv',nargs=argparse.REMAINDER)
options = parser.parse_args()
options.argv = ["DataBaseds"] + options.argv
@@ -2910,13 +1760,21 @@ def main():
parser = OptionParser()
parser.add_option("--db_access",dest="db_access",default="sqlite3",
help="database type")
+ parser.add_option("-l", "--logging_level",dest="logging_level",default=0,
+ help="logging_level 0:WARNING,1:INFO,2:DEBUG")
parser.add_option("-e","--embedded",dest="embedded",default=False,
action="store_true")
(options,args) = parser.parse_args()
options.argv = ["DataBaseds"] + args
log_fmt = '%(threadName)-14s %(levelname)-8s %(asctime)s %(name)s: %(message)s'
- logging.basicConfig(format=log_fmt, stream=sys.stdout, level=logging.INFO)
+ if options.logging_level == 1:
+ logging_level = logging.INFO
+ elif options.logging_level == 2:
+ logging_level = logging.DEBUG
+ else:
+ logging_level = logging.WARNING
+ logging.basicConfig(format=log_fmt, stream=sys.stdout,level=logging_level)
try:
db_name = "sys/database/" + options.argv[1]
set_db_name(db_name)
@@ -2928,51 +1786,89 @@ def main():
import traceback
traceback.print_exc()
+
+def __monkey_patch_database_class():
+ DataBaseClass = DataBase.TangoClassClass
+
+ def device_factory(self, device_list):
+ """for internal usage only"""
+
+ dev_name = get_db_name()
+
+ klass = self.__class__
+ klass_name = klass.__name__
+ info = get_class_by_class(klass)
+ klass = get_constructed_class_by_class(klass)
+
+ if info is None:
+ raise RuntimeError("Device class '%s' is not " \
+ "registered" % klass_name)
+
+ if klass is None:
+ raise RuntimeError("Device class '%s' as not been " \
+ "constructed" % klass_name)
+
+ deviceClassClass, deviceImplClass, deviceImplName = info
+ deviceImplClass._device_class_instance = klass
+
+ device = deviceImplClass(klass, dev_name)
+ self._add_device(device)
+ tmp_dev_list = [device]
+
+ self.dyn_attr(tmp_dev_list)
+
+ self.export_device(device, "database")
+ self.py_dev_list += tmp_dev_list
+
+ DataBaseClass.device_factory = device_factory
+
+
+def __monkey_patch_util(util):
+ # trick util to execute orb_run instead of the usual server_run
+ util._original_server_run = util.server_run
+ util.server_run = util.orb_run
+
+
def __run(db_name,argv):
"""
Runs the Database DS as a standalone database. Run it with::
-
+
./DataBaseds pydb-test -ORBendPoint giop:tcp::11000
"""
PyTango.Util.set_use_db(False)
util = PyTango.Util(argv)
- util.add_class(DataBaseClass, DataBase, 'DataBase')
+ __monkey_patch_util(util)
+ __monkey_patch_database_class()
dbi = DbInter()
util.set_interceptors(dbi)
- #util.set_serial_model(PyTango.SerialModel.NO_SYNC)
- util.server_init()
- dserver = util.get_dserver_device()
- dserver_name = dserver.get_name()
- dserver_ior = util.get_dserver_ior(dserver)
-
- dbase = util.get_device_by_name(db_name)
- dbase_name = dbase.get_name()
- dbase_ior = util.get_device_ior(dbase)
-
- host = util.get_host_name()
- pid = util.get_pid_str()
- version = util.get_version_str()
-
- dbase.DbExportDevice([dserver_name, dserver_ior, host, pid, version])
- dbase.DbExportDevice([dbase_name, dbase_ior, host, pid, version])
+ def post_init_cb():
+ logging.debug("post_init_cb()")
+ util = PyTango.Util.instance()
+ dserver = util.get_dserver_device()
+ dserver_name = dserver.get_name()
+ dserver_ior = util.get_dserver_ior(dserver)
+ dbase = util.get_device_by_name(db_name)
+ dbase_name = dbase.get_name()
+ dbase_ior = util.get_device_ior(dbase)
+ host = util.get_host_name()
+ pid = util.get_pid_str()
+ version = util.get_version_str()
+ DbExportDevice(dbase, [dserver_name, dserver_ior, host, pid, version])
+ DbExportDevice(dbase, [dbase_name, dbase_ior, host, pid, version])
+
+ run((DataBase,), args=argv, util=util, post_init_callback=post_init_cb,
+ green_mode=GreenMode.Gevent, verbose=True)
- print("Ready to accept request")
- util.orb_run()
-# util.server_run()
def __run_embedded(db_name,argv):
"""Runs the Database device server embeded in another TANGO Database
(just like any other TANGO device server)"""
+ __monkey_patch_database_class()
+
+ run((DataBase,), args=argv, util=util, green_mode=GreenMode.Gevent)
- py_util = PyTango.Util(argv)
- py_util.add_class(DataBaseClass, DataBase, 'DataBase')
- util = PyTango.Util.instance()
- util.server_init()
- print("Ready to accept request")
- util.server_run()
-
if __name__ == '__main__':
main()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pytango.git
More information about the debian-science-commits
mailing list