6/Database
This document describes the Tango Database specification.
See also: 1/Tango, 2/Device, 4/Attribute, 5/Property, 8/Server
Preamble
Copyright (c) 2019 Tango Controls Community.
This Specification is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses.
This Specification is a free and open standard and is governed by the Digital Standards Organization’s Consensus-Oriented Specification System.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC-2119.
Tango Database specification
This specification is intended to formally document the Tango Database. Runtime implementations of the Database in conforming Tango implementations MUST follow this specification.
Goals of the Database
Provide a means of defining and querying devices.
Provide a means for device servers to be configured from central control.
Serve as nameserver such that the Devices are accessible by name.
Features of the Database
Store configuration data (properties) used at startup of a device server.
Act as nameserver by storing the ITR.
Act as permanent store of dynamic settings which need to be memorized.
Ensure the uniqueness of device name and of aliases.
Keep list of controlled servers which are to be started and run on a particular host.
Limited set of functionalities provided by file as alternative to network database.
Use Cases of the Database
Register a new device server.
Store the last user setting point of the current provided by a power supply.
Define persistent configuration properties to be used by a camera every time it starts up.
Allow a subscriber or client to get connected to a stepper motor.
Define properties for all instances of a class of vaccuum pump.
Provide the ITR of a device such as an electrometer, so a user can check whether it is online or not.
A user would like to rollback the configuration of a Device when its initialization is failing.
Remove “empty” Devices from Database to clean it up.
Get all Devices of a given class of temperature gauges.
User wants to see the history (up to a configurable depth) of a Property.
A monitor tool wants the Info of a not running detector Device (exported, host, server).
A boot-up process wants to get Starter Level configuration for a list of Devices.
Specification
The database SHALL provide a means of defining and querying devices.
As the Tango database service is a central service of the Tango Control System, it SHALL be designed to be highly available and support a high level of client requests (e.g the database must be able to treat thousands of requests a second).
The database service SHALL be implemented as a Tango Device Server.
The database service SHALL be implemented with:
A frontend: As Tango Device Server.
A backend: A query and persistency engine (i.e. SQL or NoSQL engine), or a lighter ( i.e. reduced set of functionalities) engine with a single file per device server.
The Database Device SHALL have no Class Properties or Device Properties.
In the Tango Control System, the database service SHALL be available on a pre-known network address.
Clients and subscribers SHOULD access the database service via TANGO commands requested on the database device.
As a Tango Device Server, the database SHALL provide State and Status.
A limited set of the database functionality to support Tango Device Server configuration SHALL be available as a read-only file. This is an option for use in the absence of a network service.
The database SHALL enforce uniqueness of device names and aliases.
The Database SHALL enforce the naming convention defined in all Tango RFCs for device name, the command name, the attribute name, the property name, the device alias name and the device server name.
Device Export and Unexport protocols
The Device Export and Unexport protocols are used during the Device Export and Device Unexport sequences respectively (8/Server) when the Device transitions from the Not Exported phase to the Exported phase (2/Device) and vice versa.
These protocols describe the interactions between:
When the Device Server in charge of the management and communication of the Device is starting/stopping and
the Database.
Device Export protocol
The Export protocol consists of signing up a Device in a Database so any Client of the Tango Control System could find the information necessary to access it.
The Export protocol MUST be initiated by a Device Server.
During the execution of this protocol the following information MUST reach the Database:
Device name
Interoperable Tango Reference (ITR) e.g. IOR in CORBA
Device server process host name
Device server process PID or string
null
Device server process version
Currently it is implemented by executing the DbExportDevice
command on the Database device.
Device Unexport protocol
The Unexport protocol consists of marking a Device as inaccessible in the Database so any Client of the Tango Control System querying the Database knows that the Device is not accessible anymore.
The Unexport protocol SHALL be initiated by a Device Server.
In case a Device Server could not execute the protocol e.g. due to a crash of the Device Server process then another Client of the Tango Control System MAY execute it in order to maintain consistency.
During the execution of this protocol the following information MUST reach the Database:
Device name
Currently, it is implemented by executing the DbUnExportDevice
command and DbUnExportServer
(for unexporting all the Devices previously exported by the Device Server) on the Database Device.
Getting information to access a Device
Any Client of the Tango Control System SHALL be able to ask a Database for information necessary to access a Device at any time, unless the Database service is not accessible.
The Database service MUST provide information on how to access a Device or that a Device is not accessible. This information includes:
Device name
Interoperable Tango Reference (ITR)
Device version
Device Server process name
host name where the Device Server runs
Device Class name
exported flag
Device Server process PID
Currently it is implemented by executing the DbImportDevice
command on the Database Device.
List of Commands Grouped by Functionality
Devices
The database SHALL implement the following device-related commands:
DBAddDevice
DbDeleteDevice
DbGetClassForDevice
DbGetClassInheritanceForDevice
DbGetDeviceClassList
DbGetDeviceDomainList
DbGetDeviceFamilyList
DbGetDeviceInfo
DbGetDeviceList
DbGetDeviceWideList
DbGetDeviceMemberList
DbGetDeviceServerClassList
Classes
The database SHALL provide a means of querying device server classes.
The database SHALL implement the following class-related commands:
DbGetClassList
DbGetDeviceClassList
DbGetDeviceServerClassList
Properties
The database SHALL provide a means of setting and getting properties for classes, devices, attributes, pipes and free objects.
The database SHALL provide a means to retrieve the history of property value settings.
The database SHALL implement the following property-related commands:
ClassAttributeProperty
DbDeleteClassAttributeProperty
DbGetClassAttributeProperty
DbGetClassAttributeProperty2
DbGetClassAttributePropertyHist
DbPutClassAttributeProperty
DbPutClassAttributeProperty2
ClassProperty
DbDeleteClassProperty
DbGetClassProperty
DbGetClassPropertyHist
DbGetClassPropertyList
DbPutClassProperty
DeviceAttributeProperty
DbDeleteDeviceAttributeProperty
DbGetDeviceAttributeProperty
DbGetDeviceAttributeProperty2
DbGetDeviceAttributePropertyHist
DbPutDeviceAttributeProperty
DbPutDeviceAttributeProperty2
DbDeleteAllDeviceAttributeProperty
DeviceProperty
DbDeleteDeviceProperty
DbGetDeviceProperty
DbGetDevicePropertyHist
DbGetDevicePropertyList
DbPutDeviceProperty
Free Object Property
DbDeleteProperty
DbGetProperty
DbGetPropertyHist
DbGetPropertyList
DbPutProperty
ClassPipeProperty
DbGetClassPipeProperty
DbDeleteClassPipeProperty
DbPutClassPipeProperty
DbGetClassPipePropertyHist
DevicePipeProperty
DbGetDevicePipeProperty
DbDeleteDevicePipeProperty
DbDeleteAllDevicePipeProperty
DbPutDevicePipeProperty
DbGetDevicePipePropertyHist
Attributes
The database SHALL provide for the persistent storage of Attributes of classes and devices.
The database SHALL implement the following attribute-related commands:
ClassAttribute
DbDeleteClassAttribute
DbGetClassAttributeList
DeviceAttribute
DbDeleteDeviceAttribute
DbGetDeviceAttributeList
Aliases
The database SHALL provide a means of setting and getting a mapping from alias to device name.
The database SHALL provide a means of setting and getting a mapping from alias to device attribute name.
The database SHALL implement the following attribute-related commands:
AttributeAlias
DbDeleteAttributeAlias
DbGetAttributeAlias
DbGetAttributeAliasList
DbPutAttributeAlias
DbGetAttributeAlias2
DbGetAliasAttribute
DeviceAlias
DbDeleteDeviceAlias
DbGetAliasDevice
DbGetDeviceAlias
DbGetDeviceAliasList
DbPutDeviceAlias
Hosts/Servers
The database SHALL provide a means of defining hosts and servers.
The database SHALL implement the following commands:
Host
DbGetHostList
DbGetHostServerList
DbGetHostServersInfo
Server
DBAddServer
DbDeleteServer
DbGetServerList
DbGetServerNameList
DbRenameServer
ServerInfo
DbDeleteServerInfo
DbGetServerInfo
DbPutServerInfo
Pipes
The database SHALL provide a means of managing information about pipes.
The database SHALL implement the following pipe-related commands:
ClassPipe
DbDeleteClassPipe
DbGetClassPipeList
DeleteDevicePipe
DbGetDevicePipeList
Free Objects
The database SHALL provide a means of querying Free Objects (See [5/Property](../5/Property.md## Specification)).
The database SHALL implement this free object-related command:
DbGetObjectList
Exported Devices
The database SHALL provide a means to register the network address of a running Device Server and events.
The database SHALL implement the following free registry-related commands:
DbExportDevice
DbUnExportDevice
DbGetDeviceExportedList
DbGetExportedDeviceListForClass
DbImportDevice
DbExportEvent
DbImportEvent
DbUnExportEvent
DbUnExportServer
Miscellaneous
The database SHALL provide the following miscellaneous commands.
DbGetInstanceNameList
DbGetForwardedAttributeListForDevice
DbInfo
ResetTimingValues
DbGetDataForServerCache
DbMySqlSelect
DbGetCSDbServerList
List of Database commands and description
|
|
|
|
|
State | DEV_VOID | DEV_STATE | OPERATOR | This command gets the device state (stored in its device_state data member) and returns it to the caller. |
Status | DEV_VOID | CONST_DEV_STRING | OPERATOR | This command gets the device status (stored in its device_status data member) and returns it to the caller. |
DbAddDevice | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Add a Tango class device to a specific device server |
DbAddServer | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create a device server process entry in database |
DbDeleteAttributeAlias | DEV_STRING | DEV_VOID | OPERATOR | Delete an attribute alias. |
DbDeleteClassAttribute | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | delete a class attribute and all its properties from database |
DbDeleteClassAttributeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | delete class attribute properties from database |
DbDeleteClassProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete class properties from database |
DbDeleteDevice | DEV_STRING | DEV_VOID | OPERATOR | Delete a device from database |
DbDeleteDeviceAlias | DEV_STRING | DEV_VOID | OPERATOR | Delete a device alias. |
DbDeleteDeviceAttribute | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete device attribute properties from database |
DbDeleteDeviceAttributeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | delete a device attribute property from the database |
DbDeleteDeviceProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete device property(ies) |
DbDeleteProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete free property from database |
DbDeleteServer | DEV_STRING | DEV_VOID | OPERATOR | Delete server from the database but dont delete device properties |
DbDeleteServerInfo | DEV_STRING | DEV_VOID | OPERATOR | Delete info related to a Tango device server process |
DbExportDevice | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Export a device to the database |
DbExportEvent | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Export Event channel to database |
DbGetAliasDevice | DEV_STRING | DEV_STRING | OPERATOR | Get device name from its alias. |
DbGetAttributeAlias | DEV_STRING | DEV_STRING | OPERATOR | Get the attribute name for the given alias. If alias not found in database, returns an empty string. |
DbGetAttributeAliasList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get attribute alias list for a specified filter |
DbGetClassAttributeList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get attrilute list for a given Tango class with a specified filter |
DbGetClassAttributeProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get Tango class property(ies) value |
DbGetClassAttributeProperty2 | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | 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. |
DbGetClassAttributePropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve Tango class attribute property history |
DbGetClassForDevice | DEV_STRING | DEV_STRING | OPERATOR | Get Tango class for the specified device. |
DbGetClassInheritanceForDevice | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get class inheritance for the specified device. |
DbGetClassList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get Tango class list with a specified filter |
DbGetClassProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | None. |
DbGetClassPropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve Tango class property history |
DbGetClassPropertyList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get property list for a given Tango class with a specified filter |
DbGetDeviceAlias | DEV_STRING | DEV_STRING | OPERATOR | Return alias for device name if found. |
DbGetDeviceAliasList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get device alias name with a specific filter |
DbGetDeviceAttributeList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Return list of attributes matching the wildcard for the specified device |
DbGetDeviceAttributeProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get device attribute property(ies) value |
DbGetDeviceAttributeProperty2 | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | 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 |
DbGetDeviceAttributePropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve device attribute property history |
DbGetDeviceClassList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get Tango classes/device list embedded in a specific device server |
DbGetDeviceDomainList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get list of device domain name matching the specified |
DbGetDeviceExportedList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get a list of exported devices whose names satisfy the filter (wildcard is |
DbGetDeviceFamilyList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get a list of device name families for device name matching the specified wildcard |
DbGetDeviceInfo | DEV_STRING | DEVVAR_LONGSTRINGARRAY | OPERATOR | Returns info from DbImportDevice and started/stopped dates. |
DbGetDeviceList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get a list of devices for specified server and class. |
DbGetDeviceWideList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get a list of devices whose names satisfy the filter. |
DbGetDeviceMemberList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get a list of device name members for device name matching the specified filter |
DbGetDeviceProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | None. |
DbGetDevicePropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve device property history |
DbGetDevicePropertyList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get property list belonging to the specified device and with name matching the specified filter |
DbGetDeviceServerClassList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get list of Tango classes for a device server |
DbGetExportdDeviceListForClass | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Query the database for device exported for the specified class. |
DbGetHostList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get host list with name matching the specified filter |
DbGetHostServerList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get list of device server process name running on host with name matching the specified filter |
DbGetHostServersInfo | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get info about all servers running on specified host, name, mode and level |
DbGetInstanceNameList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Returns the instance names found for specified server. |
DbGetObjectList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get list of free object defined in database with name matching the specified filter |
DbGetProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get free object property |
DbGetPropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve object property history |
DbGetPropertyList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get list of property defined for a free object and matching the specified filter |
DbGetServerInfo | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get info about host, mode and level for specified server |
DbGetServerList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get list of device server process defined in database with name matching the specified filter |
DbGetServerNameList | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Returns the list of server names found for the wildcard specified. It returns only the server executable name without instance name as DbGetServerList. |
DbImportDevice | DEV_STRING | DEVVAR_LONGSTRINGARRAY | OPERATOR | Import a device from the database |
DbImportEvent | DEV_STRING | DEVVAR_LONGSTRINGARRAY | OPERATOR | Get event channel info from database |
DbInfo | DEV_VOID | DEVVAR_STRINGARRAY | OPERATOR | Get miscellaneous numbers on information stored in database |
DbPutAttributeAlias | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Define an alias for an attribute |
DbPutClassAttributeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create/Update class attribute property(ies) in database |
DbPutClassAttributeProperty2 | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | This command adds support for array properties compared to the previous one called DbPutClassAttributeProperty. The old comman is still there for compatibility reason |
DbPutClassProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create / Update class property(ies) |
DbPutDeviceAlias | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Define alias for a given device name |
DbPutDeviceAttributeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create/Update device attribute property(ies) in database |
DbPutDeviceAttributeProperty2 | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | 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. |
DbPutDeviceProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create / Update device property(ies) |
DbPutProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create / Update free object property(ies) |
DbPutServerInfo | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Update server info including host, mode and level |
DbUnExportDevice | DEV_STRING | DEV_VOID | OPERATOR | Mark a device as non exported in database |
DbUnExportEvent | DEV_STRING | DEV_VOID | OPERATOR | Mark one event channel as non exported in database |
DbUnExportServer | DEV_STRING | DEV_VOID | OPERATOR | Mark all devices belonging to a specified device server process as non exported |
ResetTimingValues | DEV_VOID | DEV_VOID | OPERATOR | Reset the timing attribute values. |
DbGetDataForServerCache | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | 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. |
DbDeleteAllDeviceAttributeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete all attribute properties for the specified device attribute(s) |
DbMySqlSelect | DEV_STRING | DEVVAR_LONGSTRINGARRAY | OPERATOR | This is a very low level command. It executes the specified SELECT command on TANGO database and returns its result without filter. |
DbGetCSDbServerList | DEV_VOID | DEVVAR_STRINGARRAY | OPERATOR | Get a list of host:port for all database server defined in the control system |
DbGetAttributeAlias2 | DEV_STRING | DEV_STRING | OPERATOR | Get the attribute alias from the attribute name. Returns one empty string if nothing found in database |
DbGetAliasAttribute | DEV_STRING | DEV_STRING | OPERATOR | Get the attribute name from the given alias. If the given alias is not found in database, returns an empty string |
DbRenameServer | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Rename a device server process |
DbGetClassPipeProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve class pipe properties |
DbGetDevicePipeProperty | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve device pipe properties |
DbDeleteClassPipe | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete a class pipe and all its properties from database |
DbDeleteDevicePipe | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete device pipe properties from database |
DbDeleteClassPipeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete class pipe properties from database |
DbDeleteDevicePipeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete device pipe properties from database |
DbGetClassPipeList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Get pipe list for a given Tango class with a specified filter |
DbGetDevicePipeList | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Return list of pipes matching the wildcard for the specified device |
DbDeleteAllDevicePipeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Delete all pipe properties for the specified device pipe(s) |
DbPutClassPipeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create/Update class pipe property(ies) in database |
DbPutDevicePipeProperty | DEVVAR_STRINGARRAY | DEV_VOID | OPERATOR | Create/Update device pipe property(ies) in database |
DbGetClassPipePropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve Tango class pipe property history |
DbGetDevicePipePropertyHist | DEVVAR_STRINGARRAY | DEVVAR_STRINGARRAY | OPERATOR | Retrieve device pipe property history |
DbGetForwardedAttributeListForDevice | DEV_STRING | DEVVAR_STRINGARRAY | OPERATOR | Get the list of devices using forwarded attribute(s) from specified device |
Database as a file
For Device servers not able to access the Tango database (most of the time due to network routing or for cyber-security reason),
it is possible to start them using a file instead of a real database. This is done via the Device server command line option:
-file=<file name>
The file based database is OPTIONAL.
In this case, the Database SHALL handle the following functionality using the specified file:
Getting, setting and deleting class properties.
Getting, setting and deleting device properties.
Getting, setting and deleting class attribute properties.
Getting, setting and deleting device attribute properties.
The following set of limitations MAY exist:
No check that the same Device server is running twice.
No Device or attribute alias name.
In case of several Device servers running on the same host, the user must manually manage a list of already used network ports.
File syntax
The file is RECOMMENDED to be an ASCII file. The syntax of the file is defined below.
Generally, comments start with the ’#’ character and a blank line is ignored.
File syntax: Devices definition.
DEVICE is the keyword to declare a device(s) definition sequence. The general syntax SHALL be
<DS name>/<inst name>/DEVICE/<Class name>: dev1,dev2,dev3
Device(s) name can follow on next line if the last line character is \
File syntax: Device property definition.
The general device property SHALL be
<device name>-><property name>: <property value>
In case of array, the array element delimiter is the character ,
. Array definition can be split over several lines if the last line character is \
. Allowed characters after the :
delimiter are space, tabulation or nothing.
A device string property with special characters (spaces). A pair of "
characters are used to delimit the string.
File syntax: Device attribute property definition.
The general device attribute property syntax SHALL be
<device name>/<attribute name>-><property name>: <property value>
Allowed characters after the :
delimiter are space, tabulation or nothing.
File syntax: Class property definition.
The general class property syntax SHALL be
CLASS/<class name>-><property name>: <property value>
CLASS is the keyword to declare a class property definition. Allowed characters after the :
delimiter are space, tabulation or nothing.
The "
characters around the property value are mandatory due to the /
character contains in the property value.