Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 10 additions & 36 deletions services/save-and-restore/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
# Save and restore service

The save-and-restore service implements the MASAR (MAchine Save And Restore) service as a collection
of REST endpoints. These can be used by clients to manage save sets (aka configurations) and
snapshots, to compare snapshots and to restore settings from snapshots.
The save-and-restore service implements service as a collection
of REST endpoints. These can be used by clients to manage configurations (aka save sets) and
snapshots, to compare snapshots and to restore PV values from snapshots.

The service depends on the app-save-and-restore-model module.

Data is persisted by a relational database engine. The service has been verified on Postgresql and Mysql.
The service is packaged as a self-contained Spring Boot jar file. External dependencies are limited to a JVM (Java 17+)
and a running instance of Elasticsearch (8.x).

# Build

Expand Down Expand Up @@ -53,37 +52,12 @@ $ curl --fail-with-body http://localhost:8080/save-restore

The response will have information about the service version, the root node id, the status of the connection with the elastic backend.

# Features

* The service defines a set of data objects - nodes - arranged in a tree structure. Nodes in the tree are
folders, configurations (aka save sets) and snapshots.

* There is always a top level root node of type folder. This cannot be modified in any manner.

* Child nodes of folder nodes are folder or configuration nodes. Child nodes
of configuration nodes are only snapshot nodes. Snapshot nodes will not contain
child nodes as this would not serve any use case.

* Snapshot nodes are associated with snapshot data items (stored PV values)
and that are not part of the tree structure.

* Each node can be associated with an arbitrary number of named tags, e.g.
a "golden" tag can be set on snapshot nodes.

* Each node has a created date and a last updated date, as well as a username
attribute. This should identify the user creating or updating a node.

* Nodes in the tree can be renamed or deleted. When a folder or configuration
node is deleted, its entire subtree is deleted unconditionally.

* A folder or configuration node can be moved to another parent node. All
child nodes of the moved node remain child nodes of the moved node.
# Documentation

* Snapshot nodes cannot be moved as they are associated with the configuration
defining the list of PVs in the snapshot.
Details about the REST API is found in the Phoebus bundled help content, which is pulled from the doc/index.rst file.

* The service is built upon Spring Boot and depends on Elasticsearch for data persistence.
# Docker

Missing features:
The latest version of the service is available as a Docker image (ghcr.io/controlsystemstudio/phoebus/service-save-and-restore:master). Any pushes to the master branch into this directory will trigger a new build of the image.

* Security in terms of authentication and authorization.
To run the service and its dependency (Elasticsearch), use docker-compose.yml.