Channel Finder operational experience at BNL work by: Gabriele Carcassi, Robert Petkus, Guobao Shen, Kunal Shroff, Lingyun Yang, written by: Gabriele Carcassi performed by: Kunal Shroff ChannelFinder at BNL channelfinder.nsls2.bnl.gov update daemon /cf-update NFS IOCs Web proxy Glassfish Web service dependency data flow CSS Scripts to - populate properties - create lattice Getting channels from the IOCs channelfinder.nsls2.bnl.gov /cf-update dependency data flow NFS IOCs Getting channels from the IOCs • channelfinder.nsls2.bnl.gov exports the directory /cf-update through NFS • Each IOC directly or indirectly has access to it • When the IOC boots, the startup script saves the output of a dbl command to a file • Filename format: hostname.iocname.dbl Updating channel list channelfinder.nsls2.bnl.gov update daemon /cf-update Glassfish Web service dependency data flow Updating channel list • Daemon monitors for changes in the /cfupdate directory and updates channelfinder – Setup a script in /etc/init.d – Uses /usr/bin/inoticoming to monitor for changes in the directory – Uses CFUpdateIOC.py script coming with channel finder python client to perform the update – Ignores all the channels that ends in “_” (NSLS-II convention for “internal” channels) Updating channel list • Update process feels very fast • System has been very reliable – no problems so far Glassfish setup channelfinder.nsls2.bnl.gov Glassfish Web service dependency data flow Glassfish setup • Running Glassfish 3.1 • Single instance of Glassfish for multiple applications – Will be the same deployment server for our log service (collaboration with MSU) – Each application available as an alias – Top application changes according to the alias • http://channelfinder.nsls2.bnl.gov – ChannelFinder • http://log.nsls2.bnl.gov – log Glassfish setup • Glassfish runs as glassfish user • Glassfish redirects to PAM for authentication – This is supported only as root user – We had to make glassfish member of the shadow group and allow it to access /etc/shadow (for local accounts) and /etc/pam_ldap.conf (for ldap accounts) – Runs fine now Glassfish setup • In ldap created the following groups: – cf-admins, admins – cf-channels, users that adds/removes channels, currently only cf-update – cf-properties, users that can add properties, a couple of people in our group and physics group – cf-tags, users that can only add tags, more people in the physics group – aphla, accelerator physics high level application, to group tags/properties from that group Glassfish setup • Main problems – Increase max file descriptors – OutOfMemory error • Used to hit it, now we don’t anymore • Quantum-bug: stopped appearing once we setup the infrastructure to debug it when it would happen again Usage from high level physics channelfinder.nsls2.bnl.gov Glassfish Web service dependency data flow Scripts to - populate properties - create lattice Usage from high level physics • Our physics group adds properties/tags • From Linyun Yang (accelerator physics) talk: – From Channel Access to Channel Finder Service: • Channel Accesses in Python and Matlab are simple to use. • High level applications (HLA) deals with thousands of magnets, instruments and more channels. • Organized/structured channel information is necessary. • Channels linked to accelerator lattice and diagnostics are even better. • Searching instead of remembering is easier for HLA users. – A “dictionary” service can help HLA to manage the channels and build a lattice structure to which the AP is familiar. (they done simulation, analysis with it in the design). device FM1G4C02A Channel Name handle SR:C02-MG:G04A{HFCor:FM1} SR:C02-MG:G04A{VFCor:FM1} Fld-I Fld-SP Fld-I Fld-SP READBACK SETPOINT READBACK SETPOINT elemName FXM1G4C02A FYM1G4C02A elemType HFCOR VFCOR elemField x y devName FM1G4C02A sEnd 65.5222 cell C02 girder G4 symmetry A length 0.044 ordinal 263 eget tags 264 eput eget x eput y sys.SR Usage from high level physics • Physics group can re-create the lattice from the information in channel finder • By tags, different lattices can be built, and elements can be shared between them. – Sharing is important for injection, where LTD1 and LTD2 shares a lot of elements with LTB CSS & ChannelFinder channelfinder.nsls2.bnl.gov Glassfish Web service dependency data flow CSS CSS & ChannelFinder • See next talk!