Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • bliss bliss
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 566
    • Issues 566
    • List
    • Boards
    • Service Desk
    • Milestones
  • Jira
    • Jira
  • Merge requests 158
    • Merge requests 158
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • BlissBliss
  • blissbliss
  • Merge requests
  • !3849

Direct ICAT communication

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged Wout De Nolf requested to merge 2848-feedback-in-bliss-when-icat-fails into master Jul 03, 2021
  • Overview 5
  • Commits 6
  • Pipelines 40
  • Changes 30

Step 1 towards solving #2848 (closed)

There are now two ICAT clients with the same API:

  1. bliss.icat.client.IcatClient: communicates directly with ICAT
  2. bliss.icat.client.IcatTangoProxy: communicates through tango servers

IcatClient is used when configured in the beacon configuration (same controller as for configuring metadata gathering)

icat_servers:
    metadata_urls: [URL1, URL2]
    elogbook_url: URL3
    elogbook_token: elogbook-00000000-0000-0000-0000-000000000000

The default URL prefix is "tcp://" for the metadata and "https://" for the e-logbook.

BLISS will fall back to IcatTangoProxy when IcatClient is not configured. As a reminder, it requires two TANGO devices per BLISS session with names "id00/metaexp/session_name" and "id00/metadata/session_name". The configuration is done in the TANGO device class properties.

Implementation

  • bliss.icat.client.IcatClient: direct communication with ICAT: e-logbook and metadata. Has one IcatElogbookClient and one IcatMessagingClient.
  • bliss.icat.client.elogbook.IcatElogbookClient: client for the e-logbook part of the ICAT+ REST API.
  • bliss.icat.client.metadata.IcatMetadataClient: client for storing dataset metadata in ICAT. Has one IcatMessagingClient.
  • bliss.icat.client.messaging.IcatMessagingClient: client for the ICAT message broker (currently activemq). It also uses the broker's REST server (jolokia) for monitoring.

Maintenance

Apart from being able to add failure handling, we have huge improvements in terms of maintenance.

Code:

  • IcatTangoProxy requires ~800 lines of code + all the code in the tango_metadata project.
  • IcatClient requires ~400 lines of code.

Infrastructure:

  • IcatTangoProxy requires 2 tango devices per BLISS session per beamline.
  • IcatClient requires 1 ICATmeta configuration per beamline (see above).
Edited Jul 12, 2021 by Wout De Nolf
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: 2848-feedback-in-bliss-when-icat-fails