Discussion how we structure runkeys
Let's discuss here how we organize runkey nodes: what goes into the payloads, what becomes child nodes etc. The runkey structure must help with the use-cases.
E.g. currently, we have this problem that each chip on the stave (lpGBT or HCC) has 2 optical connectivity references: the TX and RX elinks. Hence, if we want to search for the chips through Felix connectivity, we will end up with a list of duplicates: the same chip under a FELIX TX fiber and an RX fiber. Is that a problem? Should we search for the chips under Felix tree or should we add some shortcuts in HCC configs? E.g. we could search under FELIX RX tree, get a list of chips, and somehow have references to the corresponding TX fibers?
Currently, that's exactly how I aim to do it in the example scripts/formatedRunkey_comline.py
. The HCCs contain their tx and rx elink numbers in shortcut payloads. So, you can search for HCCs under Felix RX tree, get their TX elinks from the payloads. But you still need to know the TX fiber GBT link.
For lpGBTs it should be less of a problem, simply because there are few lpGBTs. It is not as much of a problem to receive a duplicate of their configs from a query to configDB.