-
Notifications
You must be signed in to change notification settings - Fork 2
Experimental Database
Wiki > The Backend System > System components > Experimental Database
The experimental database keeps track of:
- experiments (
experiment
table) - experiment team members (
experimentteams
table) - users in the team (
user
) - roles in the team (
role
)
The data is populated centrally from the Experiment Database Populator (alternatively named RB number populator) which is run on control-svcs. The RB numbers were populated by a different service on SECI, which can be found at https://github.com/ISISNeutronMuon/RBNumberFinder.
The experiment database populator is a Python 3.8 program that is designed to run centrally and periodically update instrument databases. It does the following:
- Monitors 'CS:INSTLIST' for instruments that are scheduled
- Gathers 200 days worth of data from the web services hosted by business apps (Using the credentials stored in a git repository on the local share).
- Reformats the data slightly to match the structure of the instrument databases
- Pushes to the instrument database (Using the credentials stored in a git repository on the local share).
- Optionally repeats every hour
- If it is the first time running the populator you will need to install Python 3.8 (any distribution should do) and ensure that you pip install the requirements listed in
requirements.txt
- The populator has unit tests that are run in jenkins.
- You will need to add access permission for the populator to write to your local database, to do this run
EPICS/SystemSetup/create_test_account.bat
- You can write some dummy test data into your local database by using the
--test_data
argument. If you do not have access to the private share you can also specify the username and password for writing to the database using the--db_user
and--db_pass
flags. The username/password can be found inEPICS/SystemSetup/test_account.sql
.
The Experiment Database Populator needs to be deployed using a Python 3.8 virtual environment as the the repository is not compatible with the version of python installed system wide.
Please follow the below instructions as part of deploying:
- Make sure you are firstly a super user to epics using the following command:
sudo su - epics
- Pull most recent changes from master in
home/epics/RB_num_populator
- From
home/epics/RB_num_populator
, check that a python 3.8 virtual environment exists called "exp_db_populator_venv". - Activate virtual environment if present and check
/home/epics/RB_num_populator/requirements.txt
file matches dependencies in venv and then deactivate the virtual environment. - If there is no virtual environment called "exp_db_populator_venv" or dependencies are not inline with
/home/epics/RB_num_populator/requirements.txt
, run/home/epics/RB_num_populator/create_rb_number_populator_python_venv.sh
and check the virtual environment has been created. - Check that the cron job is running correctly using the following command:
crontab -l
. The output should look similar to:20 * * * * sh /home/epics/RB_num_populator/rb_number_populator.sh > /tmp/rb_num_pop.out 2>&1
- Finally, check cron job is executing correctly by looking at recent logs since deploying under
/home/epics/RB_number_populator/logs
and for any errors indicating the cron job is not executing correctly under/tmp/rb_num_pop.out
.