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.6.0.tar.gz (577.8 kB view details)

Uploaded Source

Built Distribution

whatrecord-0.6.0-py3-none-any.whl (291.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: whatrecord-0.6.0.tar.gz
  • Upload date:
  • Size: 577.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for whatrecord-0.6.0.tar.gz
Algorithm Hash digest
SHA256 506cc3cbe228d9b6ac8aa7b285836ad9f18ee39e587fe8fadb1d2d0d819d8197
MD5 242ebfa85b804e04b23325263baae171
BLAKE2b-256 9baaefb507a6b422b9ef2e9b63795075c1c65d38f901824e5820d4dc1767767d

See more details on using hashes here.

File details

Details for the file whatrecord-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: whatrecord-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 291.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for whatrecord-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b48ea0a98f6fa6a8ef80e877e6fb1820703937ef44bb75724b14c05f1c7dcc7b
MD5 6bf0556a42c4c590aac3cfe5fbedd33b
BLAKE2b-256 5cca47f6cd9ffc7933ca0c00b519309561900d1a70fff42cb225f8c23f909aae

See more details on using hashes here.

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