Skip to content

Commit d1e8102

Browse files
authored
Merge pull request #5 from dmgav/api-implementation
API implementation
2 parents df952c3 + fb2f9fa commit d1e8102

38 files changed

+5354
-391
lines changed

.github/workflows/docs.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: Documentation
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
8+
runs-on: ubuntu-latest
9+
strategy:
10+
fail-fast: false
11+
12+
steps:
13+
- uses: actions/checkout@v5
14+
- name: Set up Python
15+
uses: actions/setup-python@v6
16+
with:
17+
python-version: 3.13
18+
- name: Install dependencies
19+
run: |
20+
set -vxeuo pipefail
21+
pip install .[dev]
22+
pip install .[docs]
23+
python -m pip list
24+
- name: Build Docs
25+
run: |
26+
make -C docs/ html

.github/workflows/testing.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ jobs:
3131
./start-save-and-restore.sh
3232
popd
3333
34+
export EPICS_CA_AUTO_ADDR_LIST=NO
35+
export EPICS_CA_ADDR_LIST=127.0.0.1
36+
python ioc/sim_ioc.py --no-shell &
37+
3438
- name: Test with pytest
3539
run: |
3640
# pytest -k test_ip_kernel_func -vvv

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ instance/
7070

7171
# Sphinx documentation
7272
docs/_build/
73+
docs/source/generated/
7374

7475
# PyBuilder
7576
.pybuilder/

container/create_env_file.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
import socket
1+
# import socket
22

33
if __name__ == "__main__":
44
# Get the local IP address
5-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
6-
s.connect(("8.8.8.8", 80))
7-
ip = s.getsockname()[0]
5+
# s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
6+
# s.connect(("8.8.8.8", 80))
7+
# ip = s.getsockname()[0]
8+
9+
ip = "127.0.0.1"
810

911
with open(".env", "w") as f:
1012
f.write(f"HOST_EXTERNAL_IP_ADDRESS={ip}")

container/save-and-restore.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
services:
22
saveandrestore:
3-
image: ghcr.io/controlsystemstudio/phoebus/service-save-and-restore:master
4-
ports:
5-
- "8080:8080"
3+
image: ghcr.io/controlsystemstudio/phoebus/service-save-and-restore:v5.0.2
4+
network_mode: "host"
5+
# ports:
6+
# - "8080:8080"
67
depends_on:
78
- elasticsearch
89
environment:
910
ELASTICSEARCH_NETWORK_HOST: ${HOST_EXTERNAL_IP_ADDRESS}
1011
EPICS_PVA_ADDR_LIST: ${HOST_EXTERNAL_IP_ADDRESS}
12+
EPICS_PVAS_INTF_ADDR_LIST: ${HOST_EXTERNAL_IP_ADDRESS}
1113
EPICS_PVA_AUTO_ADDR_LIST: "NO"
1214
EPICS_PVA_ENABLE_IPV6: "false"
1315
command: >
@@ -22,8 +24,9 @@ services:
2224

2325
elasticsearch:
2426
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.2
25-
ports:
26-
- "9200:9200"
27+
network_mode: "host"
28+
# ports:
29+
# - "9200:9200"
2730
environment:
2831
discovery.type: single-node
2932
bootstrap.memory_lock: "true"

docs/Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Minimal makefile for Sphinx documentation
2+
#
3+
4+
# You can set these variables from the command line.
5+
SPHINXOPTS = "-W" # This flag turns warnings into errors.
6+
SPHINXBUILD = sphinx-build
7+
SPHINXPROJ = PackagingScientificPython
8+
SOURCEDIR = source
9+
BUILDDIR = build
10+
11+
# Put it first so that "make" without argument is like "make help".
12+
help:
13+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14+
15+
.PHONY: help Makefile
16+
17+
# Catch-all target: route all unknown targets to Sphinx using the new
18+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19+
%: Makefile
20+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

docs/make.bat

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
@ECHO OFF
2+
3+
pushd %~dp0
4+
5+
REM Command file for Sphinx documentation
6+
7+
if "%SPHINXBUILD%" == "" (
8+
set SPHINXBUILD=sphinx-build
9+
)
10+
set SOURCEDIR=source
11+
set BUILDDIR=build
12+
set SPHINXPROJ=PackagingScientificPython
13+
14+
if "%1" == "" goto help
15+
16+
%SPHINXBUILD% >NUL 2>NUL
17+
if errorlevel 9009 (
18+
echo.
19+
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
20+
echo.installed, then set the SPHINXBUILD environment variable to point
21+
echo.to the full path of the 'sphinx-build' executable. Alternatively you
22+
echo.may add the Sphinx directory to PATH.
23+
echo.
24+
echo.If you don't have Sphinx installed, grab it from
25+
echo.http://sphinx-doc.org/
26+
exit /b 1
27+
)
28+
29+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
30+
goto end
31+
32+
:help
33+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
34+
35+
:end
36+
popd

docs/source/api-reference.rst

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
=============
2+
API Reference
3+
=============
4+
5+
.. currentmodule:: save_and_restore_api
6+
7+
Synchronous Communication with Save-And-Restore Server
8+
------------------------------------------------------
9+
10+
.. autosummary::
11+
:nosignatures:
12+
:toctree: generated
13+
14+
SaveRestoreAPI
15+
SaveRestoreAPI.send_request
16+
SaveRestoreAPI.open
17+
SaveRestoreAPI.close
18+
SaveRestoreAPI.__enter__
19+
SaveRestoreAPI.__exit__
20+
21+
Authentication
22+
**************
23+
24+
.. autosummary::
25+
:nosignatures:
26+
:toctree: generated
27+
28+
SaveRestoreAPI.auth_gen
29+
SaveRestoreAPI.auth_set
30+
SaveRestoreAPI.auth_clear
31+
SaveRestoreAPI.login
32+
33+
Info Controller API
34+
*******************
35+
36+
.. autosummary::
37+
:nosignatures:
38+
:toctree: generated
39+
40+
SaveRestoreAPI.info_get
41+
SaveRestoreAPI.version_get
42+
43+
Search Controller API
44+
*********************
45+
46+
.. autosummary::
47+
:nosignatures:
48+
:toctree: generated
49+
50+
SaveRestoreAPI.search
51+
52+
Help Controller API
53+
*******************
54+
55+
.. autosummary::
56+
:nosignatures:
57+
:toctree: generated
58+
59+
SaveRestoreAPI.help
60+
61+
62+
Node Controller API
63+
*******************
64+
65+
.. autosummary::
66+
:nosignatures:
67+
:toctree: generated
68+
69+
SaveRestoreAPI.node_get
70+
SaveRestoreAPI.nodes_get
71+
SaveRestoreAPI.node_add
72+
SaveRestoreAPI.node_delete
73+
SaveRestoreAPI.nodes_delete
74+
SaveRestoreAPI.node_get_children
75+
SaveRestoreAPI.node_get_parent
76+
77+
78+
Configuration Controller API
79+
****************************
80+
81+
.. autosummary::
82+
:nosignatures:
83+
:toctree: generated
84+
85+
SaveRestoreAPI.config_get
86+
SaveRestoreAPI.config_add
87+
SaveRestoreAPI.config_update
88+
89+
90+
Tag Controller API
91+
******************
92+
93+
.. autosummary::
94+
:nosignatures:
95+
:toctree: generated
96+
97+
SaveRestoreAPI.tags_get
98+
SaveRestoreAPI.tags_add
99+
SaveRestoreAPI.tags_delete
100+
101+
102+
Take Snapshot Controller API
103+
****************************
104+
105+
.. autosummary::
106+
:nosignatures:
107+
:toctree: generated
108+
109+
SaveRestoreAPI.take_snapshot_get
110+
SaveRestoreAPI.take_snapshot_save
111+
112+
113+
Snapshot Controller API
114+
***********************
115+
116+
.. autosummary::
117+
:nosignatures:
118+
:toctree: generated
119+
120+
SaveRestoreAPI.snapshot_get
121+
SaveRestoreAPI.snapshot_add
122+
SaveRestoreAPI.snapshot_update
123+
SaveRestoreAPI.snapshots_get
124+
125+
126+
Composite Snapshot Controller API
127+
*********************************
128+
129+
.. autosummary::
130+
:nosignatures:
131+
:toctree: generated
132+
133+
SaveRestoreAPI.composite_snapshot_get
134+
SaveRestoreAPI.composite_snapshot_get_nodes
135+
SaveRestoreAPI.composite_snapshot_get_items
136+
SaveRestoreAPI.composite_snapshot_add
137+
SaveRestoreAPI.composite_snapshot_update
138+
SaveRestoreAPI.composite_snapshot_consistency_check
139+
140+
141+
Snapshot Restore Controller API
142+
*******************************
143+
144+
.. autosummary::
145+
:nosignatures:
146+
:toctree: generated
147+
148+
SaveRestoreAPI.restore_node
149+
SaveRestoreAPI.restore_items
150+
151+
152+
Comparison Controller API
153+
*************************
154+
155+
.. autosummary::
156+
:nosignatures:
157+
:toctree: generated
158+
159+
SaveRestoreAPI.compare
160+
161+
162+
Filter Controller API
163+
*********************
164+
165+
.. autosummary::
166+
:nosignatures:
167+
:toctree: generated
168+
169+
SaveRestoreAPI.filter_add
170+
SaveRestoreAPI.filters_get
171+
SaveRestoreAPI.filter_delete
172+
173+
174+
Structure Controller API
175+
************************
176+
177+
.. autosummary::
178+
:nosignatures:
179+
:toctree: generated
180+
181+
SaveRestoreAPI.structure_move
182+
SaveRestoreAPI.structure_copy
183+
SaveRestoreAPI.structure_path_get
184+
SaveRestoreAPI.structure_path_nodes
185+
186+
187+
Asynchronous Communication with 0MQ Server
188+
------------------------------------------
189+
190+
.. autosummary::
191+
:nosignatures:
192+
:toctree: generated
193+
194+
aio.SaveRestoreAPI

0 commit comments

Comments
 (0)