160 likes | 301 Views
ACS Configuration Database. G.Chiozzi, B.Jeram European Southern Observatory. CDB: the purpose. The ACS Configuration Database addresses the problems related to defining, accessing and maintaining the configuration of a system.
E N D
ACS Configuration Database G.Chiozzi, B.Jeram European Southern Observatory ICALEPCS 2005 - Archamp 08 – 09 October, 2005
CDB: the purpose • The ACS Configuration Database addresses the problems related to defining, accessing and maintaining the configuration of a system. • For each Component on the system, there might be a set of static (or quasi-static) configuration parameters that have to be configured in a persistent store and read when the Component is started up or re-initialized. • CharacteristicComponents MUST have configuration information in the CDB 2nd ALMA Common Software Workshop
Configurable deployment • This includes the “structure” of the system, i.e. which statically deployed Components are part of the system and their inter-relationships. • looking at the CDB only you should be able to see how the Components are distributed among the Containers and on what hosts the Containers are running. • For Components connected to HW, this would tell you as well what HW you are using and where it is located. • Changing the CDB you can move Components around and distribute them in a different way in the system. • Deployment for dynamic components is not part of the CDB 2nd ALMA Common Software Workshop
CDB Issues • input of data by the userSystem configurators define the structure of the system and enter the configuration data. Easy and intuitive data entry methods are needed. • storage of the dataThe configuration data is kept into a database. • maintenance and management of the data (e.g. versioning)Configuration data changes because the system structure and/or the implementation of the system’s components changes with time and has to be maintained under configuration control. • loading data into the ACS ContainersAt run-time, the data has to be retrieved and used to initialize and configure the Components. 2nd ALMA Common Software Workshop
Three-tier database-access architecture DB Engine independent Tiers: • Database engine • Database Access Layer (DAL). • Database clients: • Data clients • CDB administrators 3 – Database clients Data client CDB Administration Read-only Data interface Read-writeadmin. interface 2 – Database Access Layer (DAL) DAL/CDB Server 1 – Database engine Database 2nd ALMA Common Software Workshop
CDB data organization • Data is organized/structured as hierarchy of nodes – objects (DAO) that can contain fields (=data values). 2nd ALMA Common Software Workshop
An example of data organization node1 root field Field_1 node2 Field_2 Field_3 node3 f1 f2 2nd ALMA Common Software Workshop
Configuration Database: Component Schemas 2nd ALMA Common Software Workshop
Data organization(directory hierarchy) • CDB (root) • MACI (system deployment data) • Managers • Containers • Components (just component deployment data) • alma (component specific data) 2nd ALMA Common Software Workshop
CDB Browser 2nd ALMA Common Software Workshop
DAL implementation • jDAL – Java implementation of DAL interface • CDB data organization/structure is achieved by: • file system • XML schema (XSD) – defines structure of DAO • Data is stored in XML files in directory hierarchy • (Characteristic)Component -> DAO -> XSD • implementator has to provide XSD 2nd ALMA Common Software Workshop
DAL Server DAL server implements DAL IDL: interface DAL { string get_DAO( in string curl ) raises (RecordDoesNotExist,XMLerror); DAO get_DAO_Servant( in string curl ) raises (RecordDoesNotExist,XMLerror); oneway void shutdown(); //data change handling long add_change_listener( in DALChangeListener listener ); void listen_for_changes( in string curl, in long listenerID ); void remove_change_listener( in long listenerID ); // listing string list_nodes( in string name ); }; 2nd ALMA Common Software Workshop
DAO IDL interface DAO { long get_long( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); double get_double( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); string get_string( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); string get_field_data( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); stringSeq get_string_seq( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); longSeq get_long_seq( in string propertyName ) raises (WrongDataType, FieldDoesNotExist); doubleSeq get_double_seq( in string propertyName) raises (WrongDataType, FieldDoesNotExist); }; 2nd ALMA Common Software Workshop
Component retrieves data from C++ MyComponent::MyComponent( ACE_CString _name, maci::ContainerServices* pCS) { . . . try { CDB::DAL_ptr dal_p = pCS->getCDB(); CDB::DAO_ptr dao_p = dal_p->get_DAO_Servant(m_name); description = dao_p->get_string( "description" ); m_units = dao_p->get_string( "units" ); m_min_step = dao_p->get_double( "minStep" ); } catch( ... ) { ReportError( m_name, "Unable to read configuration!" ); return false; } } 2nd ALMA Common Software Workshop
DAL change notification Get notification from CDB in case of changes interface DALChangeListener : ACS::OffShoot { void object_changed( in string curl ); }; interface DAL { long add_change_listener(in DALChangeListener listener); void listen_for_changes(in string curl, in long listenerID); void remove_change_listener(in long listenerID); }; 2nd ALMA Common Software Workshop
Documentation • ACS home page http://www.eso.org/projects/alma/develop/acs/OnlineDocs/CDB.pdf • CDB Browser: http://www.eso.org/projects/alma/develop/acs/OnlineDocs/CDB_Browser_Users_Manual.pdf 2nd ALMA Common Software Workshop