[pytango] 167/483: added TEPs
Sandor Bodo-Merle
sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:14:37 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 1a0d309381f9dcbf2130e06a459cb1d950c9ee38
Author: tiagocoutinho <tiagocoutinho at 4e9c00fd-8f2e-0410-aa12-93ce3db5e235>
Date: Thu Oct 18 10:38:07 2012 +0000
added TEPs
git-svn-id: http://svn.code.sf.net/p/tango-cs/code/bindings/PyTango/trunk@21349 4e9c00fd-8f2e-0410-aa12-93ce3db5e235
---
doc/conf.py | 4 +
doc/contents.rst | 1 +
doc/tep.rst | 13 +
doc/tep/DataBase.xmi | 817 ++++++++++++++++++++
doc/tep/database.py | 2091 ++++++++++++++++++++++++++++++++++++++++++++++++++
doc/tep/tep-0001.rst | 439 +++++++++++
doc/tep/tep-0002.rst | 328 ++++++++
7 files changed, 3693 insertions(+)
diff --git a/doc/conf.py b/doc/conf.py
index 0443ce7..c7cc7eb 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -252,6 +252,10 @@ intersphinx_mapping = {
'http://docs.scipy.org/doc/scipy/reference' : None,
'http://docs.scipy.org/doc/numpy' : None,
'http://ipython.org/ipython-doc/stable/' : None,
+ 'http://api.mongodb.org/python/current/' : None,
+ 'http://packages.python.org/CouchDB/' : None,
+ 'http://pycassa.github.com/pycassa/' : None,
+ 'http://docs.sqlalchemy.org/en/rel_0_7/' : None,
}
def copy_spaces(origin):
diff --git a/doc/contents.rst b/doc/contents.rst
index 524f5c2..dacf3b2 100644
--- a/doc/contents.rst
+++ b/doc/contents.rst
@@ -14,6 +14,7 @@ Contents
quicktour
itango/index
API <api>
+ TEP <tep>
faq
History of changes <revision>
diff --git a/doc/tep.rst b/doc/tep.rst
new file mode 100644
index 0000000..d888037
--- /dev/null
+++ b/doc/tep.rst
@@ -0,0 +1,13 @@
+.. currentmodule:: PyTango
+
+.. _pytango_enhancement_proposals:
+
+=============================
+PyTango Enhancement Proposals
+=============================
+
+.. toctree::
+ :maxdepth: 1
+
+ tep/tep-0001
+ tep/tep-0002
diff --git a/doc/tep/DataBase.xmi b/doc/tep/DataBase.xmi
new file mode 100644
index 0000000..76954a4
--- /dev/null
+++ b/doc/tep/DataBase.xmi
@@ -0,0 +1,817 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
+ <classes name="DataBase" pogoRevision="8.1">
+ <description description="This class manage the TANGO database." title="TANGO" sourcePath="/home/tcoutinho/workspace/PyTango/doc/tep" language="Python" filestogenerate="XMI file,Code files" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false">
+ <inheritances classname="Device_4Impl" sourcePath="/segfs/tango/templates/AbstractClasses"/>
+ <identification contact="at cells.es - controls" author="controls" emailDomain="cells.es" classFamily="System" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="none" reference=""/>
+ </description>
+ <commands name="State" description="This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="none.">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argin>
+ <argout description="State Code">
+ <type xsi:type="pogoDsl:StateType"/>
+ </argout>
+ <status abstract="true" inherited="true" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="Status" description="This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="none.">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argin>
+ <argout description="Status description">
+ <type xsi:type="pogoDsl:ConstStringType"/>
+ </argout>
+ <status abstract="true" inherited="true" concrete="true" concreteHere="false"/>
+ </commands>
+ <commands name="DbAddDevice" description="Add a Tango class device to a specific device server" execMethod="db_add_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Full device server process name
Str[1] = Device name
Str[2] = Tango class name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbAddServer" description="Create a device server process entry in database" execMethod="db_add_server" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteAttributeAlias" description="Delete an attribute alias." execMethod="db_delete_attribute_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Attriibute alias name.">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteClassAttribute" description="delete a class attribute and all its properties from database" execMethod="db_delete_class_attribute" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteClassAttributeProperty" description="delete class attribute properties from database" execMethod="db_delete_class_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Attribute name
Str[2] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteClassProperty" description="Delete class properties from database" execMethod="db_delete_class_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteDevice" description="Delete a devcie from database" execMethod="db_delete_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteDeviceAlias" description="Delete a device alias." execMethod="db_delete_device_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="device alias name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteDeviceAttribute" description="Delete device attribute properties from database" execMethod="db_delete_device_attribute" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteDeviceAttributeProperty" description="delete a device attribute property from the database" execMethod="db_delete_device_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Attribute name
Str[2] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteDeviceProperty" description="Delete device property(ies)" execMethod="db_delete_device_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteProperty" description="Delete free property from database" execMethod="db_delete_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Object name
Str[1] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteServer" description="Delete server from the database but dont delete device properties" execMethod="db_delete_server" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device server name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteServerInfo" description="delete info related to a Tango devvice server process" execMethod="db_delete_server_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device server name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbExportDevice" description="Export a device to the database" execMethod="db_export_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbExportEvent" description="Export Event channel to database" execMethod="db_export_event" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetAliasDevice" description="Get device name from its alias." execMethod="db_get_alias_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Alias name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetAttributeAlias" description="Get the attribute name for the given alias.
If alias not found in database, returns an empty string." execMethod="db_get_attribute_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The attribute alias name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="The attribute name (device/attribute)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetAttributeAliasList" description="Get attribute alias list for a specified filter" execMethod="db_get_attribute_alias_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="attribute alias filter string (eg: att*)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="attribute aliases">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassAttributeList" description="Get attrilute list for a given Tango class with a specified filter" execMethod="db_get_class_attribute_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Attribute name filter (eg: att*)">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Str[0] = Class attribute name
Str[n] = Class attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassAttributeProperty" description="Get Tango class property(ies) value" execMethod="db_get_class_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Attribute name
Str[n] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassAttributeProperty2" description="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." execMethod="db_get_class_attribute_property2" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class name
Str[1] = Attribute name
Str[n] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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)">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassAttributePropertyHist" description="Retrieve Tango class attribute property history" execMethod="db_get_class_attribute_property_hist" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class
Str[1] = Attribute name
Str[2] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassForDevice" description="Get Tango class for the specified device." execMethod="db_get_class_for_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device Tango class">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassInheritanceForDevice" description="Get class inheritance for the specified device." execMethod="db_get_class_inheritance_for_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassList" description="Get Tango class list with a specified filter" execMethod="db_get_class_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Class list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassProperty" description="" execMethod="db_get_class_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class
Str[1] = Property name
Str[2] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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)
....">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassPropertyHist" description="Retrieve Tango class property history" execMethod="db_get_class_property_hist" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Tango class
Str[1] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Str[0] = Property name
Str[1] = date
Str[2] = Property value number (array case)
Str[3] = Property value 1
Str[n] = Property value n">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetClassPropertyList" description="Get property list for a given Tango class with a specified filter" execMethod="db_get_class_property_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Property name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAlias" description="Return alias for device name if found." execMethod="db_get_device_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="The alias found">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAliasList" description="Get device alias name with a specific filter" execMethod="db_get_device_alias_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device alias list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAttributeList" description="Return list of attributes matching the wildcard
 for the specified device" execMethod="db_get_device_attribute_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Wildcard">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="attribute name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAttributeProperty" description="Get device attribute property(ies) value" execMethod="db_get_device_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Attribute name
Str[n] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAttributeProperty2" description="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" execMethod="db_get_device_attribute_property2" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Attribute name
Str[n] = Attribute name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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)">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceAttributePropertyHist" description="Retrieve device attribute property history" execMethod="db_get_device_attribute_property_hist" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Attribute name
Str[2] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceClassList" description="Get Tango classes/device list embedded in a specific device server" execMethod="db_get_device_class_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device server process name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Str[0] = Device name
Str[1] = Tango class
Str[n] = Device name
Str[n + 1] = Tango class">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceDomainList" description="Get list of device domain name matching the specified" execMethod="db_get_device_domain_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The wildcard">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device name domain list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceExportedList" description="Get a list of exported devices whose names satisfy the filter (wildcard is" execMethod="db_get_device_exported_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="list of exported devices">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceFamilyList" description="Get a list of device name families for device name matching the
specified wildcard" execMethod="db_get_device_family_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The wildcard">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Family list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceInfo" description="Returns info from DbImportDevice and started/stopped dates." execMethod="db_get_device_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="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)">
+ <type xsi:type="pogoDsl:LongStringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceList" description="Get a list of devices for specified server and class." execMethod="db_get_device_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="argin[0] : server name
argin[1] : class name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="The list of devices for specified server and class.">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceWideList" description="Get a list of devices whose names satisfy the filter." execMethod="db_get_device_wide_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="list of exported devices">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceMemberList" description="Get a list of device name members for device name matching the
specified filter" execMethod="db_get_device_member_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device names member list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceProperty" description="" execMethod="db_get_device_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[1] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDevicePropertyHist" description="Retrieve device property history" execMethod="db_get_device_property_hist" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Device name
Str[2] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Str[0] = Property name
Str[1] = date
Str[2] = Property value number (array case)
Str[3] = Property value 1
Str[n] = Property value n">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDevicePropertyList" description="Get property list belonging to the specified device and with
name matching the specified filter" execMethod="db_get_device_property_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = device name
Str[1] = Filter">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Property name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDeviceServerClassList" description="Get list of Tango classes for a device server" execMethod="db_get_device_server_class_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="device server process name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="list of classes for this device server">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetExportdDeviceListForClass" description="Query the database for device exported for the specified class." execMethod="db_get_exportd_device_list_for_class" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Class name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device exported list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetHostList" description="Get host list with name matching the specified filter" execMethod="db_get_host_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Host name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetHostServerList" description="Get list of device server process name running on host with name matching
the specified filter" execMethod="db_get_host_server_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device server process name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetHostServersInfo" description="Get info about all servers running on specified host, name, mode and level" execMethod="db_get_host_servers_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Host name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Server info for all servers running on specified host">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetInstanceNameList" description="Returns the instance names found for specified server." execMethod="db_get_instance_name_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Server name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="The instance names found for specified server.">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetObjectList" description="Get list of free object defined in database with name
matching the specified filter" execMethod="db_get_object_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Object name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetProperty" description="Get free object property" execMethod="db_get_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Object name
Str[1] = Property name
Str[n] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetPropertyHist" description="Retrieve object property history" execMethod="db_get_property_hist" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Object name
Str[2] = Property name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Str[0] = Property name
Str[1] = date
Str[2] = Property value number (array case)
Str[3] = Property value 1
Str[n] = Property value n">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetPropertyList" description="Get list of property defined for a free object and matching the
specified filter" execMethod="db_get_property_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = Object name
Str[1] = filter">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="Property name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetServerInfo" description="Get info about host, mode and level for specified server" execMethod="db_get_server_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="server name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="server info">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetServerList" description="Get list of device server process defined in database
with name matching the specified filter" execMethod="db_get_server_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The filter">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="Device server process name list">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetServerNameList" description="Returns the list of server names found for the wildcard specified.
It returns only the server executable name without instance name as DbGetServerList." execMethod="db_get_server_name_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="wildcard for server names.">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="server names found.">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbImportDevice" description="Import a device from the database" execMethod="db_import_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device name (or alias)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:LongStringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbImportEvent" description="Get event channel info from database" execMethod="db_import_event" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="name of event channel or factory">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="export information e.g. IOR">
+ <type xsi:type="pogoDsl:LongStringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbInfo" description="Get miscellaneous numbers on information
stored in database" execMethod="db_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argin>
+ <argout description="Miscellaneous info like:
- Device defined in database
- Device marked as exported in database
- Device server process defined in database
- Device server process marked as exported in database
- Device properties defined in database
- Class properties defined in database
- Device attribute properties defined in database
- Class attribute properties defined in database
- Object properties defined in database">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutAttributeAlias" description="Define an alias for an attribute" execMethod="db_put_attribute_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = attribute name
Str[1] = attribute alias">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutClassAttributeProperty" description="Create/Update class attribute property(ies) in database" execMethod="db_put_class_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutClassAttributeProperty2" description="This command adds support for array properties compared to the previous one
called DbPutClassAttributeProperty. The old comman is still there for compatibility reason" execMethod="db_put_class_attribute_property2" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 number (array case)
Str[5] = Property value 1
Str[n] = Property value n (array case)
.....">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutClassProperty" description="Create / Update class property(ies)" execMethod="db_put_class_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutDeviceAlias" description="Define alias for a given device name" execMethod="db_put_device_alias" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Str[0] = device name
Str[1] = alias name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutDeviceAttributeProperty" description="Create/Update device attribute property(ies) in database" execMethod="db_put_device_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutDeviceAttributeProperty2" description="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." execMethod="db_put_device_attribute_property2" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutDeviceProperty" description="Create / Update device property(ies)" execMethod="db_put_device_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutProperty" description="Create / Update free object property(ies)" execMethod="db_put_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="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 xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbPutServerInfo" description="Update server info including host, mode and level" execMethod="db_put_server_info" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="server info">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbUnExportDevice" description="Mark a device as non exported in database" execMethod="db_un_export_device" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device name">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbUnExportEvent" description="Mark one event channel as non exported in database" execMethod="db_un_export_event" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="name of event channel or factory to unexport">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="none">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbUnExportServer" description="Mark all devices belonging to a specified device server
process as non exported" execMethod="db_un_export_server" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Device server name (executable/instance)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="ResetTimingValues" description="Reset the timing attribute values." execMethod="reset_timing_values" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetDataForServerCache" description="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." execMethod="db_get_data_for_server_cache" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="Elt[0] = DS name (exec_name/inst_name), Elt[1] = Host name">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="All the data needed by the device server during its startup sequence. Precise list depend on the device server">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbDeleteAllDeviceAttributeProperty" description="Delete all attribute properties for the specified device attribute(s)" execMethod="db_delete_all_device_attribute_property" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="str[0] = device name
Str[1]...str[n] = attribute name(s)">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argin>
+ <argout description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbMySqlSelect" description="This is a very low level command.
It executes the specified SELECT command on TANGO database and returns its result without filter." execMethod="db_my_sql_select" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="MySql Select command">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="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">
+ <type xsi:type="pogoDsl:LongStringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetCSDbServerList" description="Get a list of host:port for all database server defined in the control system" execMethod="db_get_csdb_server_list" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="">
+ <type xsi:type="pogoDsl:VoidType"/>
+ </argin>
+ <argout description="List of host:port with one element for each database server">
+ <type xsi:type="pogoDsl:StringArrayType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetAttributeAlias2" description="Get the attribute alias from the attribute name.
Returns one empty string if nothing found in database" execMethod="db_get_attribute_alias2" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The attribute name (dev_name/att_name)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="The attribute alias name (or empty string)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <commands name="DbGetAliasAttribute" description="Get the attribute name from the given alias.
If the given alias is not found in database, returns an empty string" execMethod="db_get_alias_attribute" displayLevel="OPERATOR" polledPeriod="0">
+ <argin description="The attribute alias">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argin>
+ <argout description="The attribute name (dev_name/att_name)">
+ <type xsi:type="pogoDsl:StringType"/>
+ </argout>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ </commands>
+ <attributes name="StoredProcedureRelease" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="0" maxY="0">
+ <dataType xsi:type="pogoDsl:StringType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_average" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:DoubleType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_minimum" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:DoubleType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_maximum" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:DoubleType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_calls" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:DoubleType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_index" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:StringType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <attributes name="Timing_info" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="64" maxY="0">
+ <dataType xsi:type="pogoDsl:StringType"/>
+ <changeEvent fire="false" libCheckCriteria="false"/>
+ <archiveEvent fire="false" libCheckCriteria="false"/>
+ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+ <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+ </attributes>
+ <preferences docHome="./doc_html" makefileHome="/home/tcoutinho/local-tango8/share/pogo/preferences"/>
+ <additionalFiles name="DataBaseUtils" path="/mntdirect/_segfs/tango/cppserver/dbase/DataBaseUtils.cpp"/>
+ <additionalFiles name="update_starter" path="/mntdirect/_segfs/tango/cppserver/dbase/update_starter.cpp"/>
+ </classes>
+</pogoDsl:PogoSystem>
diff --git a/doc/tep/database.py b/doc/tep/database.py
new file mode 100644
index 0000000..837eeb8
--- /dev/null
+++ b/doc/tep/database.py
@@ -0,0 +1,2091 @@
+#!/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
+##############################################################################
+
+"""This class manage the TANGO database."""
+
+__all__ = ["DataBase", "DataBaseClass", "main"]
+
+__docformat__ = 'restructuredtext'
+
+import PyTango
+import sys
+# Add additional import
+#----- PROTECTED REGION ID(DataBase.additionnal_import) ENABLED START -----#
+
+#----- PROTECTED REGION END -----# // DataBase.additionnal_import
+
+##############################################################################
+## Device States Description
+##
+## No states for this device
+##############################################################################
+
+class DataBase (PyTango.Device_4Impl):
+
+#--------- Add you global variables here --------------------------
+#----- PROTECTED REGION ID(DataBase.global_variables) ENABLED START -----#
+
+#----- 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.attr_StoredProcedureRelease_read = ''
+ self.attr_Timing_average_read = [0.0]
+ self.attr_Timing_minimum_read = [0.0]
+ self.attr_Timing_maximum_read = [0.0]
+ self.attr_Timing_calls_read = [0.0]
+ self.attr_Timing_index_read = ['']
+ self.attr_Timing_info_read = ['']
+ #----- PROTECTED REGION ID(DataBase.init_device) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.Timing_minimum_read
+ attr.set_value(self.attr_Timing_minimum_read)
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.Timing_maximum_read
+ attr.set_value(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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.Timing_index_read
+ attr.set_value(self.attr_Timing_index_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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.Timing_info_read
+ attr.set_value(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
+
+
+#==================================================================
+#
+# DataBase command methods
+#
+#==================================================================
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbAddDevice
+
+#------------------------------------------------------------------
+# 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
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbAddServer()")
+ #----- PROTECTED REGION ID(DataBase.DbAddServer) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbAddServer
+
+#------------------------------------------------------------------
+# DbDeleteAttributeAlias command:
+#------------------------------------------------------------------
+ def DbDeleteAttributeAlias(self, argin):
+ """ Delete an attribute alias.
+
+ :param argin: Attriibute alias name.
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteAttributeAlias()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteAttributeAlias) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteAttributeAlias
+
+#------------------------------------------------------------------
+# DbDeleteClassAttribute command:
+#------------------------------------------------------------------
+ def DbDeleteClassAttribute(self, argin):
+ """ delete a class attribute and all its properties from database
+
+ :param argin: Str[0] = Tango class name
+ Str[1] = Attribute name
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteClassAttribute()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteClassAttribute) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassAttribute
+
+#------------------------------------------------------------------
+# 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
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteClassAttributeProperty()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteClassAttributeProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassAttributeProperty
+
+#------------------------------------------------------------------
+# 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
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteClassProperty()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteClassProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteClassProperty
+
+#------------------------------------------------------------------
+# DbDeleteDevice command:
+#------------------------------------------------------------------
+ def DbDeleteDevice(self, argin):
+ """ Delete a devcie from database
+
+ :param argin: device name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteDevice()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteDevice) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteDevice
+
+#------------------------------------------------------------------
+# DbDeleteDeviceAlias command:
+#------------------------------------------------------------------
+ def DbDeleteDeviceAlias(self, argin):
+ """ Delete a device alias.
+
+ :param argin: device alias name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceAlias()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceAlias) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceAlias
+
+#------------------------------------------------------------------
+# DbDeleteDeviceAttribute command:
+#------------------------------------------------------------------
+ def DbDeleteDeviceAttribute(self, argin):
+ """ Delete device attribute properties from database
+
+ :param argin: Str[0] = Device name
+ Str[1] = Attribute name
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteDeviceAttribute()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteDeviceAttribute) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteDeviceProperty
+
+#------------------------------------------------------------------
+# DbDeleteProperty command:
+#------------------------------------------------------------------
+ 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:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteProperty()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteProperty) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteServer
+
+#------------------------------------------------------------------
+# DbDeleteServerInfo command:
+#------------------------------------------------------------------
+ def DbDeleteServerInfo(self, argin):
+ """ delete info related to a Tango devvice server process
+
+ :param argin: Device server name
+ :type: PyTango.DevString
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteServerInfo()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteServerInfo) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteServerInfo
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbExportDevice
+
+#------------------------------------------------------------------
+# 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
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbExportEvent()")
+ #----- PROTECTED REGION ID(DataBase.DbExportEvent) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbExportEvent
+
+#------------------------------------------------------------------
+# DbGetAliasDevice command:
+#------------------------------------------------------------------
+ def DbGetAliasDevice(self, argin):
+ """ Get device name from its alias.
+
+ :param argin: Alias name
+ :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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAlias
+ return argout
+
+#------------------------------------------------------------------
+# DbGetAttributeAliasList command:
+#------------------------------------------------------------------
+ def DbGetAttributeAliasList(self, argin):
+ """ Get attribute alias list for a specified filter
+
+ :param argin: attribute alias filter string (eg: att*)
+ :type: PyTango.DevString
+ :return: attribute aliases
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetAttributeAliasList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetAttributeAliasList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAliasList
+ return argout
+
+#------------------------------------------------------------------
+# 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*)
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeList
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetClassAttributeProperty()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetClassAttributeProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeProperty
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributeProperty2
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassAttributePropertyHist
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassInheritanceForDevice
+ return argout
+
+#------------------------------------------------------------------
+# DbGetClassList command:
+#------------------------------------------------------------------
+ def DbGetClassList(self, argin):
+ """ Get Tango class list with a specified filter
+
+ :param argin: Filter
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetClassProperty command:
+#------------------------------------------------------------------
+ def DbGetClassProperty(self, argin):
+ """
+
+ :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() + ".DbGetClassProperty()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetClassProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassProperty
+ return argout
+
+#------------------------------------------------------------------
+# DbGetClassPropertyHist command:
+#------------------------------------------------------------------
+ def DbGetClassPropertyHist(self, argin):
+ """ Retrieve Tango class property history
+
+ :param argin: Str[0] = Tango class
+ Str[1] = 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() + ".DbGetClassPropertyHist()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetClassPropertyHist) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassPropertyHist
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :return: Property name list
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetClassPropertyList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetClassPropertyList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetClassPropertyList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDeviceAlias command:
+#------------------------------------------------------------------
+ def DbGetDeviceAlias(self, argin):
+ """ Return alias for device name if found.
+
+ :param argin: The device 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAlias
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDeviceAliasList command:
+#------------------------------------------------------------------
+ def DbGetDeviceAliasList(self, argin):
+ """ Get device alias name with a specific filter
+
+ :param argin: The filter
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAliasList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDeviceAttributeList command:
+#------------------------------------------------------------------
+ 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeList
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceAttributeProperty()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceAttributeProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeProperty
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributeProperty2
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceAttributePropertyHist
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- 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
+ :type: PyTango.DevString
+ :return: Device name domain list
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceDomainList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceDomainList) ENABLED START -----#
+
+ #----- 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
+ :type: PyTango.DevString
+ :return: list of exported devices
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceExportedList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceExportedList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceExportedList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDeviceFamilyList command:
+#------------------------------------------------------------------
+ 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.debug_stream("In " + self.get_name() + ".DbGetDeviceFamilyList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceFamilyList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceFamilyList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDeviceInfo command:
+#------------------------------------------------------------------
+ def DbGetDeviceInfo(self, argin):
+ """ Returns info from DbImportDevice and started/stopped dates.
+
+ :param argin: Device 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],['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceInfo) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceInfo
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :type: PyTango.DevVarStringArray
+ :return: The list of devices for specified server and class.
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceList) ENABLED START -----#
+
+ #----- 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
+ :type: PyTango.DevString
+ :return: list of exported devices
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceWideList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceWideList) ENABLED START -----#
+
+ #----- 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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetDeviceMemberList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceMemberList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceMemberList
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ 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() + ".DbGetDeviceProperty()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDeviceProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceProperty
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDevicePropertyHist command:
+#------------------------------------------------------------------
+ def DbGetDevicePropertyHist(self, argin):
+ """ Retrieve device property history
+
+ :param argin: Str[0] = Device 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() + ".DbGetDevicePropertyHist()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetDevicePropertyHist) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDevicePropertyHist
+ return argout
+
+#------------------------------------------------------------------
+# DbGetDevicePropertyList command:
+#------------------------------------------------------------------
+ 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDeviceServerClassList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetExportdDeviceListForClass command:
+#------------------------------------------------------------------
+ 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.debug_stream("In " + self.get_name() + ".DbGetExportdDeviceListForClass()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetExportdDeviceListForClass) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetExportdDeviceListForClass
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetHostList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetHostList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetHostList
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetHostServerList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetHostServerList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetHostServerList
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetHostServersInfo
+ return argout
+
+#------------------------------------------------------------------
+# DbGetInstanceNameList command:
+#------------------------------------------------------------------
+ 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 -----#
+
+ #----- 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
+ :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 -----#
+
+ #----- 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
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetProperty
+ return argout
+
+#------------------------------------------------------------------
+# DbGetPropertyHist command:
+#------------------------------------------------------------------
+ def DbGetPropertyHist(self, argin):
+ """ Retrieve object property history
+
+ :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() + ".DbGetPropertyHist()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetPropertyHist) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetServerList
+ return argout
+
+#------------------------------------------------------------------
+# DbGetServerNameList command:
+#------------------------------------------------------------------
+ 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetServerNameList
+ return argout
+
+#------------------------------------------------------------------
+# 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbImportEvent
+ return argout
+
+#------------------------------------------------------------------
+# DbInfo command:
+#------------------------------------------------------------------
+ def DbInfo(self):
+ """ Get miscellaneous numbers on information
+ stored in database
+
+ :param :
+ :type: PyTango.DevVoid
+ :return: Miscellaneous info like:
+ - Device defined in database
+ - Device marked as exported in database
+ - Device server process defined in database
+ - Device server process marked as exported in database
+ - Device properties defined in database
+ - Class properties defined in database
+ - Device attribute properties defined in database
+ - 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbPutAttributeAlias
+
+#------------------------------------------------------------------
+# 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
+ .....
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbPutClassAttributeProperty()")
+ #----- PROTECTED REGION ID(DataBase.DbPutClassAttributeProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbPutClassAttributeProperty
+
+#------------------------------------------------------------------
+# DbPutClassAttributeProperty2 command:
+#------------------------------------------------------------------
+ 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
+ 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() + ".DbPutClassAttributeProperty2()")
+ #----- PROTECTED REGION ID(DataBase.DbPutClassAttributeProperty2) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbPutProperty
+
+#------------------------------------------------------------------
+# DbPutServerInfo command:
+#------------------------------------------------------------------
+ def DbPutServerInfo(self, argin):
+ """ Update server info including host, mode and level
+
+ :param argin: server info
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbPutServerInfo()")
+ #----- PROTECTED REGION ID(DataBase.DbPutServerInfo) ENABLED START -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetDataForServerCache
+ return argout
+
+#------------------------------------------------------------------
+# 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)
+ :type: PyTango.DevVarStringArray
+ :return:
+ :rtype: PyTango.DevVoid """
+ self.debug_stream("In " + self.get_name() + ".DbDeleteAllDeviceAttributeProperty()")
+ #----- PROTECTED REGION ID(DataBase.DbDeleteAllDeviceAttributeProperty) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbDeleteAllDeviceAttributeProperty
+
+#------------------------------------------------------------------
+# 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
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbMySqlSelect
+ return argout
+
+#------------------------------------------------------------------
+# 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
+ :rtype: PyTango.DevVarStringArray """
+ self.debug_stream("In " + self.get_name() + ".DbGetCSDbServerList()")
+ argout = ['']
+ #----- PROTECTED REGION ID(DataBase.DbGetCSDbServerList) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetCSDbServerList
+ return argout
+
+#------------------------------------------------------------------
+# 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)
+ :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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetAttributeAlias2
+ return argout
+
+#------------------------------------------------------------------
+# DbGetAliasAttribute command:
+#------------------------------------------------------------------
+ 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 -----#
+
+ #----- PROTECTED REGION END -----# // DataBase.DbGetAliasAttribute
+ return argout
+
+
+#==================================================================
+#
+# 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)"]],
+ }
+
+
+ # 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);
+ print "In DataBase Class constructor"
+
+#==================================================================
+#
+# DataBase class main method
+#
+#==================================================================
+def main():
+ try:
+ py = PyTango.Util(sys.argv)
+ py.add_class(DataBaseClass,DataBase,'DataBase')
+
+ U = PyTango.Util.instance()
+ U.server_init()
+ U.server_run()
+
+ except PyTango.DevFailed,e:
+ print '-------> Received a DevFailed exception:',e
+ except Exception,e:
+ print '-------> An unforeseen exception occured....',e
+
+if __name__ == '__main__':
+ main()
diff --git a/doc/tep/tep-0001.rst b/doc/tep/tep-0001.rst
new file mode 100644
index 0000000..76321d8
--- /dev/null
+++ b/doc/tep/tep-0001.rst
@@ -0,0 +1,439 @@
+=================================
+TEP 1 - Device Server API Level 2
+=================================
+
+================== ====================================================
+ TEP: 1
+================== ====================================================
+ Title: Device Server API Level 2
+ Version: 1.0.0
+ Last-Modified: 17-Oct-2012
+ Author: Tiago Coutinho <tcoutinho at cells.es>
+ Status: Active
+ Type: Standards Track
+ Content-Type: text/x-rst
+ Created: 17-Oct-2012
+ Post-History: 17-Oct-2012
+================== ====================================================
+
+Abstract
+========
+
+This TEP aims to define a new high level API for writting device servers.
+
+Rationale
+=========
+
+The code for Tango device servers written in Python often obey a pattern. It
+would be nice if non tango experts could create tango device servers without
+having to code some obscure tango related code. Some of the code which
+is repeated over and over again in almost all python device servers could be
+hidden from the tango developer.
+
+Places to simplify
+===================
+
+Currently, a pogo generated device server code for a Motor having a double
+attribute `position` would look like this::
+
+ #!/usr/bin/env python
+ # -*- coding:utf-8 -*-
+
+
+ ##############################################################################
+ ## license :
+ ##============================================================================
+ ##
+ ## File : Motor.py
+ ##
+ ## Project :
+ ##
+ ## $Author : t$
+ ##
+ ## $Revision : $
+ ##
+ ## $Date : $
+ ##
+ ## $HeadUrl : $
+ ##============================================================================
+ ## This file is generated by POGO
+ ## (Program Obviously used to Generate tango Object)
+ ##
+ ## (c) - Software Engineering Group - ESRF
+ ##############################################################################
+
+ """"""
+
+ __all__ = ["Motor", "MotorClass", "main"]
+
+ __docformat__ = 'restructuredtext'
+
+ import PyTango
+ import sys
+ # Add additional import
+ #----- PROTECTED REGION ID(Motor.additionnal_import) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.additionnal_import
+
+ ##############################################################################
+ ## Device States Description
+ ##
+ ## No states for this device
+ ##############################################################################
+
+ class Motor (PyTango.Device_4Impl):
+
+ #--------- Add you global variables here --------------------------
+ #----- PROTECTED REGION ID(Motor.global_variables) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.global_variables
+ #------------------------------------------------------------------
+ # Device constructor
+ #------------------------------------------------------------------
+ def __init__(self,cl, name):
+ PyTango.Device_4Impl.__init__(self,cl,name)
+ self.debug_stream("In " + self.get_name() + ".__init__()")
+ Motor.init_device(self)
+
+ #------------------------------------------------------------------
+ # Device destructor
+ #------------------------------------------------------------------
+ def delete_device(self):
+ self.debug_stream("In " + self.get_name() + ".delete_device()")
+ #----- PROTECTED REGION ID(Motor.delete_device) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.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.attr_Position_read = 0.0
+ #----- PROTECTED REGION ID(Motor.init_device) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.init_device
+
+ #------------------------------------------------------------------
+ # Always excuted hook method
+ #------------------------------------------------------------------
+ def always_executed_hook(self):
+ self.debug_stream("In " + self.get_name() + ".always_excuted_hook()")
+ #----- PROTECTED REGION ID(Motor.always_executed_hook) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.always_executed_hook
+
+ #==================================================================
+ #
+ # Motor read/write attribute methods
+ #
+ #==================================================================
+
+ #------------------------------------------------------------------
+ # Read Position attribute
+ #------------------------------------------------------------------
+ def read_Position(self, attr):
+ self.debug_stream("In " + self.get_name() + ".read_Position()")
+ #----- PROTECTED REGION ID(Motor.Position_read) ENABLED START -----#
+ self.attr_Position_read = 1.0
+ #----- PROTECTED REGION END -----# // Motor.Position_read
+ attr.set_value(self.attr_Position_read)
+
+ #------------------------------------------------------------------
+ # Read Attribute Hardware
+ #------------------------------------------------------------------
+ def read_attr_hardware(self, data):
+ self.debug_stream("In " + self.get_name() + ".read_attr_hardware()")
+ #----- PROTECTED REGION ID(Motor.read_attr_hardware) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.read_attr_hardware
+
+
+ #==================================================================
+ #
+ # Motor command methods
+ #
+ #==================================================================
+
+
+ #==================================================================
+ #
+ # MotorClass class definition
+ #
+ #==================================================================
+ class MotorClass(PyTango.DeviceClass):
+
+ # Class Properties
+ class_property_list = {
+ }
+
+
+ # Device Properties
+ device_property_list = {
+ }
+
+
+ # Command definitions
+ cmd_list = {
+ }
+
+
+ # Attribute definitions
+ attr_list = {
+ 'Position':
+ [[PyTango.DevDouble,
+ PyTango.SCALAR,
+ PyTango.READ]],
+ }
+
+
+ #------------------------------------------------------------------
+ # MotorClass Constructor
+ #------------------------------------------------------------------
+ def __init__(self, name):
+ PyTango.DeviceClass.__init__(self, name)
+ self.set_type(name);
+ print "In Motor Class constructor"
+
+ #==================================================================
+ #
+ # Motor class main method
+ #
+ #==================================================================
+ def main():
+ try:
+ py = PyTango.Util(sys.argv)
+ py.add_class(MotorClass,Motor,'Motor')
+
+ U = PyTango.Util.instance()
+ U.server_init()
+ U.server_run()
+
+ except PyTango.DevFailed,e:
+ print '-------> Received a DevFailed exception:',e
+ except Exception,e:
+ print '-------> An unforeseen exception occured....',e
+
+ if __name__ == '__main__':
+ main()
+
+
+To make things clear, let's analyse the stripified version of the code instead::
+
+ import PyTango
+ import sys
+
+ class Motor (PyTango.Device_4Impl):
+
+ def __init__(self,cl, name):
+ PyTango.Device_4Impl.__init__(self,cl,name)
+ self.debug_stream("In " + self.get_name() + ".__init__()")
+ Motor.init_device(self)
+
+ def delete_device(self):
+ self.debug_stream("In " + self.get_name() + ".delete_device()")
+
+ def init_device(self):
+ self.debug_stream("In " + self.get_name() + ".init_device()")
+ self.get_device_properties(self.get_device_class())
+ self.attr_Position_read = 0.0
+
+ def always_executed_hook(self):
+ self.debug_stream("In " + self.get_name() + ".always_excuted_hook()")
+
+ def read_Position(self, attr):
+ self.debug_stream("In " + self.get_name() + ".read_Position()")
+ self.attr_Position_read = 1.0
+ attr.set_value(self.attr_Position_read)
+
+ def read_attr_hardware(self, data):
+ self.debug_stream("In " + self.get_name() + ".read_attr_hardware()")
+
+
+ class MotorClass(PyTango.DeviceClass):
+
+ class_property_list = {
+ }
+
+
+ device_property_list = {
+ }
+
+
+ cmd_list = {
+ }
+
+
+ attr_list = {
+ 'Position':
+ [[PyTango.DevDouble,
+ PyTango.SCALAR,
+ PyTango.READ_WRITE]],
+ }
+
+ def __init__(self, name):
+ PyTango.DeviceClass.__init__(self, name)
+ self.set_type(name);
+ print "In Motor Class constructor"
+
+
+ def main():
+ try:
+ py = PyTango.Util(sys.argv)
+ py.add_class(MotorClass,Motor,'Motor')
+
+ U = PyTango.Util.instance()
+ U.server_init()
+ U.server_run()
+
+ except PyTango.DevFailed,e:
+ print '-------> Received a DevFailed exception:',e
+ except Exception,e:
+ print '-------> An unforeseen exception occured....',e
+
+ if __name__ == '__main__':
+ main()
+
+After looking at most python device servers one can see some patterns:
+
+At `<Device>` class level:
+
+ #. <Device> always inherits from latest available DeviceImpl from pogo version
+ #. constructor always does the same:
+ #. calls super constructor
+ #. debug message
+ #. calls init_device
+
+ #. all methods have debug_stream as first instruction
+ #. init_device does additionaly get_device_properties()
+
+At `<Device>Class` class level:
+
+ #. A <Device>Class class exists for every <DeviceName> class
+ #. The <Device>Class class only contains attributes, commands and
+ properties descriptions (no logic)
+ #. The attr_list description always follows the same (non explicit) pattern
+ (and so does cmd_list, class_property_list, device_property_list)
+ #. the syntax for attr_list, cmd_list, etc is far from understandable
+
+At `main()` level:
+
+ #. The main() method always does the same:
+ #. create `Util`
+ #. register tango class
+ #. `server_init()`
+ #. `server_run()`
+
+
+
+High level API
+==============
+
+The goals of the high level API are:
+
+ #. Automatically inherit from latest DeviceImpl available from current PyTango installation
+ #. add default implementation for `init_device`: debug_stream(), get_device_properties()
+ #. Hide `<Device>Class` class completely
+ #. simplify `main()`
+
+The final code could look something like this::
+
+ #!/usr/bin/env python
+
+ from PyTango import server_run
+ from PyTango.api2 import Device, DeviceMeta, Attr
+
+
+ class Motor(Device):
+ __metaclass__ = DeviceMeta
+
+ def read_position(self, attr):
+ attr.set_value(2.3)
+
+ position = Attr()
+
+
+ def main():
+ server_run((Motor,))
+
+ if __name__ == "__main__":
+ main()
+
+
+Ok, a pogo generated code could look like this::
+
+ ##############################################################################
+ # File : Motor.py
+ # Project : motor project
+ # Author : tcoutinho
+ #============================================================================
+ # This file is generated by POGO
+ # (Program Obviously used to Generate tango Object)
+ #
+ # (c) - Software Engineering Group - ESRF
+ ##############################################################################
+
+ import PyTango
+ from PyTango.api2 import Device, DeviceMeta, Attr
+
+ # Add additional import
+ #----- PROTECTED REGION ID(Motor.additionnal_import) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.additionnal_import
+
+ class Motor(Device):
+ __metaclass__ = DeviceMeta
+
+ #--------- Add you global variables here --------------------------
+ #----- PROTECTED REGION ID(Motor.global_variables) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.global_variables
+
+ def init_device(self):
+ Device.init_device(self)
+ self.attr_Position_read = 0.0
+ #----- PROTECTED REGION ID(Motor.init_device) ENABLED START -----#
+
+ #----- PROTECTED REGION END -----# // Motor.init_device
+
+ # Motor read/write attribute methods
+
+ def read_position(self, attr):
+ #----- PROTECTED REGION ID(Motor.Position_read) ENABLED START -----#
+ self.attr_Position_read = 1.0
+ #----- PROTECTED REGION END -----# // Motor.Position_read
+ attr.set_value(self.attr_Position_read)
+
+
+ position = Attr(name='position',
+ dtype=PyTango.DevDouble,
+ dformat=PyTango.AttrDataFormat.SCALAR,
+ fread=read_position)
+
+ def main():
+ classes = Motor,
+ server_run(classes)
+
+ if __name__ == "__main__":
+ main()
+
+but still is far more inteligable than the original version.
+
+References
+==========
+
+
+Copyright
+=========
+
+This document has been placed in the public domain.
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
diff --git a/doc/tep/tep-0002.rst b/doc/tep/tep-0002.rst
new file mode 100644
index 0000000..8210160
--- /dev/null
+++ b/doc/tep/tep-0002.rst
@@ -0,0 +1,328 @@
+
+.. currentmodule:: PyTango.databaseds
+
+===================================================
+TEP 2 - Tango database serverless
+===================================================
+
+================== ====================================================
+ TEP: 2
+================== ====================================================
+ Title: Tango database serverless
+ Version: 1.0.0
+ Last-Modified: 17-Oct-2012
+ Author: Tiago Coutinho <tcoutinho at cells.es>
+ Status: Active
+ Type: Standards Track
+ Content-Type: text/x-rst
+ Created: 17-Oct-2012
+ Post-History: 17-Oct-2012
+================== ====================================================
+
+Abstract
+========
+
+This TEP aims to define a python DataBaseds which doesn't need a database server
+behind. It would make tango easier to try out by anyone and it could greatly
+simplify tango installation on small environments (like small, independent
+laboratories).
+
+Motivation
+==========
+
+I was given a openSUSE laptop so that I could do the presentation for the tango
+meeting held in FRMII on October 2012.
+Since I planned to do a demonstration as part of the presentation I installed
+all mysql libraries, omniorb, tango and pytango on this laptop.
+
+During the flight to Munich I realized tango was not working because of a
+strange mysql server configuration done by the openSUSE distribution. I am not a
+mysql expert and I couldn't google for a solution. Also it made me angry to have
+to install all the mysql crap (libmysqlclient, mysqld, mysql-administrator, bla,
+bla) just to have a demo running.
+
+At the time of writting the first version of this TEP I still didn't solve
+the problem! Shame on me!
+
+Also at the same tango meetting during the tango archiving discussions I heard
+fake whispers or changing the tango archiving from MySQL/Oracle to NoSQL.
+
+I started thinking if it could be possible to have an alternative implementation
+of DataBaseds without the need for a mysql server.
+
+Requisites
+==========
+
+ * no dependencies on external packages
+ * no need for a separate database server process (at least, by default)
+ * no need to execute post install scripts to fill database
+
+
+Step 1 - Gather database information
+=====================================
+
+It turns out that python has a Database API specification (:pep:`249`).
+Python distribution comes natively (>= 2.6) with not one but several persistency options
+(:ref:`persistence`):
+
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| module | Native | Platforms | API | Database | Description |
++=================+========+===============+============+=====================+=========================================================================+
+| **Native python 2.x** |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`pickle` | Yes | all | dump/load | file | python serialization/marchalling module |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`shelve` | Yes | all | dict | file | high level persistent, dictionary-like object |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`marshal` | Yes | all | dump/load | file | Internal Python object serialization |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`anydbm` | Yes | all | dict | file | Generic access to DBM-style databases. Wrapper for :mod:`dbhash`, |
+| | | | | | :mod:`gdbm`, :mod:`dbm` or :mod:`dumbdbm` |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbm` | Yes | all | dict | file | Simple "database" interface |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`gdbm` | Yes | unix | dict | file | GNU's reinterpretation of dbm |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbhash` | Yes | unix? | dict | file | DBM-style interface to the BSD database library (needs :mod:`bsddb`). |
+| | | | | | **Removed in python 3** |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`bsddb` | Yes | unix? | dict | file | Interface to Berkeley DB library. **Removed in python 3** |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dumbdbm` | Yes | all | dict | file | Portable DBM implementation |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`sqlite3` | Yes | all | DBAPI2 | file, memory | DB-API 2.0 interface for SQLite databases |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| **Native Python 3.x** |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`pickle` | Yes | all | dump/load | file | python serialization/marchalling module |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`shelve` | Yes | all | dict | file | high level persistent, dictionary-like object |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`marshal` | Yes | all | dump/load | file | Internal Python object serialization |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbm` | Yes | all | dict | file | Interfaces to Unix "databases". Wrapper for :mod:`dbm.gnu`, |
+| | | | | | :mod:`dbm.ndbm`, :mod:`dbm.dumb` |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbm.gnu` | Yes | unix | dict | file | GNU's reinterpretation of dbm |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbm.ndbm` | Yes | unix | dict | file | Interface based on ndbm |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`dbm.dumb` | Yes | all | dict | file | Portable DBM implementation |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+| :mod:`sqlite3` | Yes | all | DBAPI2 | file, memory | DB-API 2.0 interface for SQLite databases |
++-----------------+--------+---------------+------------+---------------------+-------------------------------------------------------------------------+
+
+**third-party DBAPI2**
+
+.. hlist::
+ :columns: 1
+
+ * `pyodbc <http://code.google.com/p/pyodbc>`_
+ * `mxODBC <http://www.egenix.com/products/python/mxODBC/>`_
+ * `kinterbasdb <http://www.firebirdsql.org/index.php?op=devel&sub=python>`_
+ * `mxODBC Connect <http://www.egenix.com/products/python/mxODBCConnect/>`_
+ * `MySQLdb <http://sourceforge.net/projects/mysql-python>`_
+ * `psycopg <http://www.initd.org/software/initd/psycopg>`_
+ * `pyPgSQL <http://pypgsql.sourceforge.net/>`_
+ * `PySQLite <http://code.google.com/p/pysqlite/>`_
+ * `adodbapi <http://adodbapi.sourceforge.net/>`_
+ * `pymssql <http://sourceforge.net/projects/pymssql>`_
+ * `sapdbapi <http://www.sapdb.org/sapdbapi.html>`_
+ * `ibm_db <http://code.google.com/p/ibm-db/>`_
+ * `InformixDB <http://informixdb.sourceforge.net/>`_
+
+**third-party NOSQL**
+
+*(these may or not have python DBAPI2 interface)*
+
+ * `CouchDB <http://couchdb.apache.org/>`_ - :mod:`couchdb.client`
+ * `MongoDB <http://www.mongodb.org/>`_ - :mod:`pymongo` - NoSQL database
+ * `Cassandra <http://cassandra.apache.org/>`_ - :mod:`pycassa`
+
+**third-party database abstraction layer**
+
+ * `SQLAlchemy <http://www.sqlalchemy.org/>`_ - :mod:`sqlalchemy` - Python SQL toolkit and Object Relational Mapper
+
+Step 2 - Which module to use?
+=====================================
+
+*herrrr... wrong question!*
+
+The first decision I thought it should made is which python module better
+suites the needs of this TEP. Then I realized I would fall into the same trap as
+the C++ DataBaseds: hard link the server to a specific database implementation
+(in their case MySQL).
+
+I took a closer look at the tables above and I noticed that python persistent
+modules come in two flavors: dict and DBAPI2.
+So naturally the decision I thought it had to be made was: *which flavor to use?*
+
+But then I realized both flavors could be used if we properly design the python
+DataBaseds.
+
+Step 3 - Architecture
+=====================================
+
+If you step back for a moment and look at the big picture you will see that
+what we need is really just a mapping between the Tango DataBase set of
+attributes and commands (I will call this `Tango Device DataBase API`) and
+the python database API oriented to tango (I will call this TDB interface).
+
+The TDB interface should be represented by the :class:`ITangoDB`.
+Concrete databases should implement this interface (example, DBAPI2 interface
+should be represented by a class :class:`TangoDBAPI2` implementing :class:`ITangoDB`).
+
+Connection to a concrete ITangoDB should be done through a factory: :class:`TangoDBFactory`
+
+The Tango DataBase device should have no logic. Through basic configuration it
+should be able to ask the :class:`TangoDBFactory` for a concrete :class:`ITangoDB`. The code of
+every command and attribute should be simple forward to the :class:`ITangoDB` object (a
+part of some parameter translation and error handling).
+
+.. graphviz::
+
+ digraph uml {
+ fontname = "Bitstream Vera Sans"
+ fontsize = 8
+
+ node [
+ fontname = "Bitstream Vera Sans"
+ fontsize = 8
+ shape = "record"
+ ]
+
+ edge [
+ fontname = "Bitstream Vera Sans"
+ fontsize = 8
+ ]
+
+ subgraph tangodbPackage {
+ label = "Package tangodb"
+
+ ITangoDB [
+ label = "{ITangoDB|+ add_device()=0\l+delete_device()=0\l+export_device()=0\l...}"
+ ]
+
+ DBAPI2 [
+ label = "{TangoDBAPI2}"
+ ]
+
+ Dict [
+ label = "{TangoDBDict}"
+ ]
+
+ DBSqlite3 [
+ label = "{TangoDBSqlite3}"
+ ]
+
+ mxODBC [
+ label = "{TangoDBmxODBC}"
+ ]
+
+ MySQLdb [
+ label = "{TangoDBMySQLdb}"
+ ]
+
+ Shelve [
+ label = "{TangoDBShelve}"
+ ]
+
+ TangoDBFactory [
+ label = "{TangoDBFactory|+get_tango_db(): ITangoDB}"
+ ]
+
+ DBAPI2 -> ITangoDB
+ Dict -> ITangoDB
+ DBSqlite3 -> DBAPI2
+ mxODBC -> DBAPI2
+ MySQLdb -> DBAPI2
+ Shelve -> Dict
+ }
+
+ DeviceImpl [
+ label = "{Tango::DeviceImpl}"
+ ]
+
+ DataBase [
+ label = "{DataBase|+DbAddDevice()\l+DbDeleteDevice()\l+DbExportDevice()\l...}"
+ ]
+
+ DataBase -> DeviceImpl
+ }
+
+Step 4 - The python DataBaseds
+=====================================
+
+If we can make a python device server which has the same set of attributes
+and commands has the existing C++ DataBase (and of course the same semantic
+behavior), the tango DS and tango clients will never know the difference (BTW,
+that's one of the beauties of tango).
+
+The C++ DataBase consists of around 80 commands and 1 mandatory attribute (the
+others are used for profiling) so making a python Tango DataBase device from
+scratch is out of the question.
+
+Fortunately, C++ DataBase is one of the few device servers that were developed
+since the beginning with pogo and were successfully adapted to pogo 8. This
+means there is a precious :download:`DataBase.xmi` available which can be
+loaded to pogo and saved as a python version.
+The result of doing this can be found here :download:`here <database.py>` (this file
+was generated with a beta version of the pogo 8.1 python code generator so
+it may contain errors).
+
+Step 5 - Default database implementation
+===========================================
+
+The decision to which database implementation should be used should obey the
+following rules:
+
+ #. should not require an extra database server process
+ #. should be a native python module
+ #. should implement python DBAPI2
+
+It came to my attention the :mod:`sqlite3` module would be perfect as a default
+database implementation. This module comes with python since version 2.5 and is
+available in all platforms. It implements the DBAPI2 interface and can store
+persistently in a common OS file or even in memory.
+
+There are many free scripts on the web to translate a mysql database to sqlite3
+so one can use an existing mysql tango database and directly use it with the
+python DataBaseds with sqlite3 implementation.
+
+Development
+=================
+
+The development is being done in PyTango SVN trunk in the :mod:`PyTango.databaseds`
+module.
+
+You can checkout with::
+
+ $ svn co https://tango-cs.svn.sourceforge.net/svnroot/tango-cs/bindings/PyTango/trunk PyTango-trunk
+
+Disadvantages
+===============
+
+A serverless, file based, database has some disadvantages when compared to the
+mysql solution:
+
+ * Not possible to distribute load between Tango DataBase DS and database server
+ (example: run the Tango DS in one machine and the database server in another)
+ * Not possible to have two Tango DataBase DS pointing to the same database
+ * Harder to upgrade to newer version of sql tables (specially if using dict
+ based database)
+
+Bare in mind the purpose of this TED is to simplify the process of trying tango
+and to ease installation and configuration on small environments (like small,
+independent laboratories).
+
+References
+============
+
+ * http://wiki.python.org/moin/DbApiCheatSheet
+ * http://wiki.python.org/moin/DbApiModuleComparison
+ * http://wiki.python.org/moin/DatabaseProgramming
+ * http://wiki.python.org/moin/DbApiFaq
+ * :pep:`249`
+ * http://wiki.python.org/moin/ExtendingTheDbApi
+ * http://wiki.python.org/moin/DbApi3
+
--
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