Skip to main content

EPICS IOC record search and meta information tool

Project description

https://img.shields.io/travis/pcdshub/whatrecord.svg https://img.shields.io/pypi/v/whatrecord.svg

EPICS IOC record search and meta information tool.

Spiritual successor of recordwhat.

https://pcdshub.github.io/whatrecord/

What?

Lark grammar-based parsers which parse any of the following into easy-to-use Python dataclasses:

  • EPICS access security files (.acf)

  • EPICS autosave save files (.sav)

  • EPICS V3 database files

  • EPICS V4 database files

  • EPICS msi-style template/substitutions files (.template/.substitutions)

  • EPICS gateway configuration (.pvlist)

  • EPICS sequencer state notation language programs (.st)

  • EPICS StreamDevice protocols (.proto)

All of the above can be easily serialized to JSON for interoperability.

Pseudo-IOC shell interpreter:

  • Reads st.cmd files as if it were an IOC

  • Loads and lints record files (and other supported formats above)

  • Builds inter- and intra- IOC PV relationship graphs

  • Stores context information about where each record/field/etc came from

API server

  • IOC finder (LCLS IOC manager, list of files, or external script)

  • Provides access to all parsed information above

  • Preliminary asyncio-based client to talk with the server

Frontend

  • User-friendly vue.js v3 frontend that communicates with API server

  • Interfaces for:
    • Searching for records

    • Record relationships (processing and links, cross-IOC links)

    • IOC information

    • Gateway configuration overview

    • Duplicate records

    • Optional plugins

Plugins

  • happi devices

  • Simple LDAP search (LCLS hosts, “netconfig”)

  • LCLS-specific epicsArch / logbook DAQ PVs

  • TwinCAT PLC source code (pytmc)

Makefile / build system information

  • Determine build dependencies from a Makefile

  • Recursively inspect sub-dependencies

  • Graph IOC dependency information or output it as JSON

Command-line tools

  • whatrecord lint - lint a database

  • whatrecord parse - parse supported formats

  • whatrecord server - start the API server

  • whatrecord graph - graph PV relationships, SNL diagrams, IOC dependencies

Record?

https://docs.epics-controls.org/en/latest/guides/EPICS_Process_Database_Concepts.html#the-epics-process-database

Requirements

Requirements:

  • Python 3.9

  • aiohttp

  • apischema[graphql]

  • graphviz

  • jinja2

  • lark

Docker

See /docker to set up a Python 3.10-based whatrecord container. A docker-compose configuration for starting up the frontend/backend servers is also provided. Note that the default configuration only indexes the whatrecord-provided IOCs.

Frontend Screenshots

Search for records and view relationships:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_1.png

View StreamDevice protocol information:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_2.png

See where your qsrv pvAccess keys come from:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_3.png

See access security settings:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_4.png

View all of your IOCs in one place and browse their records by type:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_5.png

View inter-IOC record relationships:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_6.png

View all of your ophyd/happi devices and their relevant PVs:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_7.png

View LDAP-provided settings:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_8.png

(LCLS-specific) View epicsArch DAQ PVs:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_9.png

View gateway PVList configurations:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_10.png

View record duplicates:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_11.png

View API server logs:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_12.png

See per-parameter values:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_13.png https://github.com/pcdshub/whatrecord/raw/assets/screenshot_15.png

See database lint:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_14.png

Other Screenshots

Use whatrecord deps --graph to inspect IOCs/modules with make and generate a dependency graph of modules:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_16.png

Use whatrecord graph to graph state notation language .st file logic:

https://github.com/pcdshub/whatrecord/raw/assets/screenshot_17.png https://github.com/pcdshub/whatrecord/raw/assets/screenshot_18.png

Use an external tool like jq to sift through information from whatrecord’s JSON output:

$ whatrecord parse whatrecord/tests/iocs/db/pva/iq.db | jq '.records[] | [.name, .record_type, .fields.OUT.value]'
[
  "$(PREFIX)Rate",
  "ao",
  "$(PREFIX)dly_.ODLY NPP"
]
[
  "$(PREFIX)Delta",
  "ao",
  null
]
...

$ whatrecord parse whatrecord/tests/iocs/db/pva/iq.db | jq '.records[] | [ .name, .info["Q:group"]]'
[
  "$(PREFIX)Rate",
  null
]
[
  "$(PREFIX)Phase:I",
  {
    "$(PREFIX)iq": {
      "phas.i": {
        "+type": "plain",
        "+channel": "VAL"
      }
    }
  }
]
...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whatrecord-0.4.1.tar.gz (244.0 kB view details)

Uploaded Source

File details

Details for the file whatrecord-0.4.1.tar.gz.

File metadata

  • Download URL: whatrecord-0.4.1.tar.gz
  • Upload date:
  • Size: 244.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for whatrecord-0.4.1.tar.gz
Algorithm Hash digest
SHA256 7748a52eb5fc754b11e62028ef6b50677419f15552eb3c38964e0845d219f0d9
MD5 6e6b22705534691df65bf1aa09f688fa
BLAKE2b-256 8362a5fd93ea7eaef89700198ffbf3d4eb0d294b4156a0bbeb4bfaa1f9438c4e

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page