nxsconfigserver 2.18.1__tar.gz → 2.20.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian11_py3/Dockerfile +1 -1
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/install.sh +5 -5
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.github/workflows/tests.yml +3 -30
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/ChangeLog +8 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/NXSConfigServer.xmi +13 -1
- {nxsconfigserver-2.18.1/nxsconfigserver.egg-info → nxsconfigserver-2.20.0}/PKG-INFO +6 -5
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/README.rst +5 -4
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/Attributes.html +10 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/FullDocument.html +174 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/Merger.py +14 -5
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/NXSConfigServer.py +31 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/Release.py +1 -1
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/XMLConfigurator.py +12 -4
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0/nxsconfigserver.egg-info}/PKG-INFO +6 -5
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/NXSConfigServer_test.py +6 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/XMLConfigurator_test.py +45 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian10_py2/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian10_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian8_py2/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian8_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian9_py2/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/debian9_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/run.sh +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.flake8 +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.gitignore +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/.oldtravis.yml +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/COPYRIGHT +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/MANIFEST.in +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/NXSConfigServer +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/conf/my.cnf +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/conf/mysql_create.sql +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc/Makefile +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc/conf.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc/index.rst +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc/make.bat +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc/nxsconfigserver.rst +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrCanFailDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrJSONSettings.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrLinkDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrSTEPDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrSelection.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrVariables.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrVersion.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/AttrXMLString.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/ClassDescription.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableSelections.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdClose.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdComponentDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdComponentVariables.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdComponentsDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdComponentsVariables.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdCreateConfiguration.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteComponent.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteDataSource.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteSelection.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdDependentComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdInstantiatedComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdMandatoryComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdMerge.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdOpen.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdSelections.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdSetComponentDataSources.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdSetMandatoryComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdState.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdStatus.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdStoreComponent.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdStoreDataSource.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdStoreSelection.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/CmdUnsetMandatoryComponents.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/Commands.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/Properties.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/States.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/TitleBanner.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/doc_html/index.html +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/man/NXSConfigServer.1 +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/ComponentParser.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/Errors.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/MYSQLDataBase.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/StreamSet.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver/__init__.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/SOURCES.txt +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/dependency_links.txt +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/not-zip-safe +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/requires.txt +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/top_level.txt +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/setup.cfg +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/setup.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/ComponentHandler_test.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/Errors_test.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/MYSQLDataBase_test.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/Merger_test.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/ServerSetUp.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/StreamSet_test.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/__init__.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/__main__.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/checks.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/test/main.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/tools/ndts.sql +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/tools/setupServer.py +0 -0
- {nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/tools/simpleClient.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
|
|
3
3
|
echo "restart mysql service"
|
|
4
|
-
if [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu24.04" ]; then
|
|
4
|
+
if [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "debian12tg10" ] || [ "$1" = "debian13" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu25.10" ] || [ "$1" = "ubuntu24.04" ]; then
|
|
5
5
|
docker exec --user root ndts service mariadb restart
|
|
6
6
|
else
|
|
7
7
|
# workaround for a bug in debian9, i.e. starting mysql hangs
|
|
@@ -16,7 +16,7 @@ fi
|
|
|
16
16
|
|
|
17
17
|
echo "install tango-common"
|
|
18
18
|
docker exec --user root ndts /bin/bash -c 'apt-get -qq update; export DEBIAN_FRONTEND=noninteractive; apt-get -qq install -y tango-common; sleep 10'
|
|
19
|
-
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ]; then
|
|
19
|
+
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "debian13" ]; then
|
|
20
20
|
# docker exec --user tango ndts /bin/bash -c '/usr/lib/tango/DataBaseds 2 -ORBendPoint giop:tcp::10000 &'
|
|
21
21
|
docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=root\npassword=rootpw" > /root/.my.cnf'
|
|
22
22
|
docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=tango\nhost=localhost\npassword=rootpw" > /var/lib/tango/.my.cnf'
|
|
@@ -32,7 +32,7 @@ fi
|
|
|
32
32
|
echo "install tango-db"
|
|
33
33
|
docker exec --user root ndts /bin/bash -c 'apt-get -qq update; export DEBIAN_FRONTEND=noninteractive; apt-get -qq install -y tango-db; sleep 10'
|
|
34
34
|
if [ "$?" -ne "0" ]; then exit 255; fi
|
|
35
|
-
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ]; then
|
|
35
|
+
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.10" ] || [ "$1" = "ubuntu25.04" ]; then
|
|
36
36
|
docker exec --user tango ndts /usr/bin/mysql -e 'create database tango'
|
|
37
37
|
docker exec --user tango ndts /bin/bash -c '/usr/bin/mysql tango < /usr/share/dbconfig-common/data/tango-db/install/mysql'
|
|
38
38
|
fi
|
|
@@ -52,12 +52,12 @@ if [ "$2" = "2" ]; then
|
|
|
52
52
|
echo "install pytango and nxsconfigserver-db"
|
|
53
53
|
docker exec --user root ndts /bin/bash -c 'apt-get -qq update; apt-get install -y python-pytango nxsconfigserver-db ; sleep 10'
|
|
54
54
|
else
|
|
55
|
-
if [ "$1" = "debian10" ] || [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu20.10" ] || [ "$1" = "debian11" ] || [ "$1" = "debian12" ] ; then
|
|
55
|
+
if [ "$1" = "debian10" ] || [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ] || [ "$1" = "ubuntu25.10" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu20.10" ] || [ "$1" = "debian11" ] || [ "$1" = "debian12tg10" ] || [ "$1" = "debian12" ] || [ "$1" = "debian13" ] ; then
|
|
56
56
|
echo "install pytango"
|
|
57
57
|
docker exec --user root ndts /bin/bash -c 'apt-get -qq update; apt-get install -y python3-tango'
|
|
58
58
|
echo "install nxsconfigserver-db"
|
|
59
59
|
docker exec --user root ndts /bin/bash -c 'apt-get -qq update; apt-get install -y nxsconfigserver-db'
|
|
60
|
-
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.04" ]; then
|
|
60
|
+
if [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu24.10" ] || [ "$1" = "ubuntu25.10" ] || [ "$1" = "ubuntu25.04" ]; then
|
|
61
61
|
docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON nxsconfig.* TO "tango"@"%" identified by "rootpw"'
|
|
62
62
|
docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON nxsconfig.* TO "tango"@"localhost" identified by "rootpw"'
|
|
63
63
|
docker exec --user root ndts /usr/bin/mysql -e 'FLUSH PRIVILEGES'
|
|
@@ -24,7 +24,7 @@ jobs:
|
|
|
24
24
|
runs-on: ubuntu-latest
|
|
25
25
|
strategy:
|
|
26
26
|
matrix:
|
|
27
|
-
os: [debian12, debian11,
|
|
27
|
+
os: [debian13, debian12tg10, debian12, debian11, ubuntu25.10, ubuntu24.04, ubuntu22.04]
|
|
28
28
|
steps:
|
|
29
29
|
- uses: actions/checkout@v2
|
|
30
30
|
- uses: actions/setup-python@v2
|
|
@@ -47,33 +47,6 @@ jobs:
|
|
|
47
47
|
OSYS: ${{ matrix.os }}
|
|
48
48
|
run: .ci/run.sh ${OSYS} 3
|
|
49
49
|
- name: Stop the docker
|
|
50
|
-
run: docker container stop ndts
|
|
51
|
-
|
|
52
|
-
python2_tests:
|
|
53
|
-
runs-on: ubuntu-latest
|
|
54
|
-
strategy:
|
|
55
|
-
matrix:
|
|
56
|
-
os: [debian10]
|
|
57
|
-
steps:
|
|
58
|
-
- uses: actions/checkout@v2
|
|
59
|
-
- uses: actions/setup-python@v2
|
|
60
|
-
- name: Update bash files
|
|
61
50
|
run: |
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- name: Build the docker
|
|
65
|
-
env:
|
|
66
|
-
OSYS: ${{ matrix.os }}
|
|
67
|
-
run: docker build -t ndts .ci/${OSYS}_py2
|
|
68
|
-
- name: Run the docker
|
|
69
|
-
run: docker run --name ndts -d -it -v `pwd`:/home/tango ndts
|
|
70
|
-
- name: install tango and nxsconfigserver
|
|
71
|
-
env:
|
|
72
|
-
OSYS: ${{ matrix.os }}
|
|
73
|
-
run: .ci/install.sh ${OSYS} 2
|
|
74
|
-
- name: run tests
|
|
75
|
-
env:
|
|
76
|
-
OSYS: ${{ matrix.os }}
|
|
77
|
-
run: .ci/run.sh ${OSYS} 2
|
|
78
|
-
- name: Stop the docker
|
|
79
|
-
run: docker container stop ndts
|
|
51
|
+
docker exec --user root ndts /bin/bash -c "chown -R 1001 /home/tango "
|
|
52
|
+
docker container stop ndts
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
2026-01-16 Jan Kotanski <jankotan@gmail.com>
|
|
2
|
+
* add MergedXML attribute (#88)
|
|
3
|
+
* tagged as v2.20.0
|
|
4
|
+
|
|
5
|
+
2025-07-29 Jan Kotanski <jankotan@gmail.com>
|
|
6
|
+
* clear the link name (#79)
|
|
7
|
+
* tagged as v2.19.0
|
|
8
|
+
|
|
1
9
|
2025-07-18 Jan Kotanski <jankotan@gmail.com>
|
|
2
10
|
* speedup InstantiatedDataSources command (#75)
|
|
3
11
|
* tagged as v2.18.1
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="ASCII"?>
|
|
2
2
|
<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://tango.org/pogo/PogoDsl">
|
|
3
3
|
<classes name="NXSConfigServer" pogoRevision="9.9">
|
|
4
|
-
<description description="NeXuS Configuration Server is a Tango Server with its implementation based
on a MySQL database. It allows to store XML configuration datasources
and components. It also gives possibility to select mandatory components
and perform the process of component merging.

Source code: https://github.com/nexdatas/nxsconfigserver/
Web page: https://nexdatas.github.io/nxsconfigserver/
NexDaTaS Web page: https://nexdatas.github.io
" title="Configuration Server for Nexus Data Writer" sourcePath="/home/jkotan/ndts/
|
|
4
|
+
<description description="NeXuS Configuration Server is a Tango Server with its implementation based
on a MySQL database. It allows to store XML configuration datasources
and components. It also gives possibility to select mandatory components
and perform the process of component merging.

Source code: https://github.com/nexdatas/nxsconfigserver/
Web page: https://nexdatas.github.io/nxsconfigserver/
NexDaTaS Web page: https://nexdatas.github.io
" title="Configuration Server for Nexus Data Writer" sourcePath="/home/jkotan/ndts/nexdatas.configserver" language="Python" filestogenerate="XMI file,Code files,Protected Regions,html Pages" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false" descriptionHtmlExists="false">
|
|
5
5
|
<inheritances classname="Device_Impl" sourcePath=""/>
|
|
6
6
|
<identification contact="at desy.de - jan.kotanski" author="jan.kotanski" emailDomain="desy.de" classFamily="Acquisition" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="DESY" reference=""/>
|
|
7
7
|
</description>
|
|
@@ -411,6 +411,18 @@
|
|
|
411
411
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
412
412
|
<properties description="JSON list of datasources to which links will be added" label="Datasources to which extra links will be added" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
|
|
413
413
|
</attributes>
|
|
414
|
+
<attributes name="MergedXML" attType="Scalar" rwType="READ" displayLevel="EXPERT" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
|
|
415
|
+
<dataType xsi:type="pogoDsl:StringType"/>
|
|
416
|
+
<changeEvent fire="false" libCheckCriteria="false"/>
|
|
417
|
+
<archiveEvent fire="false" libCheckCriteria="false"/>
|
|
418
|
+
<dataReadyEvent fire="false" libCheckCriteria="true"/>
|
|
419
|
+
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
420
|
+
<properties description="XML for merged components without applied variables " label="XML for merged components" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
|
|
421
|
+
<readExcludedStates>ON</readExcludedStates>
|
|
422
|
+
<readExcludedStates>RUNNING</readExcludedStates>
|
|
423
|
+
<writeExcludedStates>ON</writeExcludedStates>
|
|
424
|
+
<writeExcludedStates>RUNNING</writeExcludedStates>
|
|
425
|
+
</attributes>
|
|
414
426
|
<states name="ON" description="Server is ON">
|
|
415
427
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
416
428
|
</states>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nxsconfigserver
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.20.0
|
|
4
4
|
Summary: Configuration Server for Nexus Data Writer
|
|
5
5
|
Home-page: http://github.com/jkotan/nexdatas/nxsconfigserver
|
|
6
6
|
Author: Jan Kotanski, Eugen Wintersberger , Halil Pasic
|
|
@@ -98,21 +98,22 @@ with proper privileges.
|
|
|
98
98
|
Debian packages
|
|
99
99
|
^^^^^^^^^^^^^^^
|
|
100
100
|
|
|
101
|
-
Debian Bookworm, Bullseye
|
|
101
|
+
Debian Trixie, Bookworm, Bullseye and as well as Ubuntu Questing, Noble, Jammy packages can be found in the HDRI repository.
|
|
102
102
|
|
|
103
103
|
To install the debian packages, add the PGP repository key
|
|
104
104
|
|
|
105
105
|
.. code-block:: console
|
|
106
106
|
|
|
107
107
|
$ sudo su
|
|
108
|
-
$
|
|
108
|
+
$ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
|
|
109
|
+
$ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
|
|
109
110
|
|
|
110
|
-
and then download the corresponding source list, e.g. for
|
|
111
|
+
and then download the corresponding source list, e.g. for trixie
|
|
111
112
|
|
|
112
113
|
.. code-block:: console
|
|
113
114
|
|
|
114
115
|
$ cd /etc/apt/sources.list.d
|
|
115
|
-
$ wget http://repos.pni-hdri.de/
|
|
116
|
+
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.sources
|
|
116
117
|
|
|
117
118
|
Finally, for python2 packages
|
|
118
119
|
|
|
@@ -71,21 +71,22 @@ with proper privileges.
|
|
|
71
71
|
Debian packages
|
|
72
72
|
^^^^^^^^^^^^^^^
|
|
73
73
|
|
|
74
|
-
Debian Bookworm, Bullseye
|
|
74
|
+
Debian Trixie, Bookworm, Bullseye and as well as Ubuntu Questing, Noble, Jammy packages can be found in the HDRI repository.
|
|
75
75
|
|
|
76
76
|
To install the debian packages, add the PGP repository key
|
|
77
77
|
|
|
78
78
|
.. code-block:: console
|
|
79
79
|
|
|
80
80
|
$ sudo su
|
|
81
|
-
$
|
|
81
|
+
$ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
|
|
82
|
+
$ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
|
|
82
83
|
|
|
83
|
-
and then download the corresponding source list, e.g. for
|
|
84
|
+
and then download the corresponding source list, e.g. for trixie
|
|
84
85
|
|
|
85
86
|
.. code-block:: console
|
|
86
87
|
|
|
87
88
|
$ cd /etc/apt/sources.list.d
|
|
88
|
-
$ wget http://repos.pni-hdri.de/
|
|
89
|
+
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.sources
|
|
89
90
|
|
|
90
91
|
Finally, for python2 packages
|
|
91
92
|
|
|
@@ -109,6 +109,16 @@
|
|
|
109
109
|
<td> OPERATOR </td>
|
|
110
110
|
<td> JSON list of datasources to which links will be added </td>
|
|
111
111
|
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td> <a href="AttrMergedXML.html"> MergedXML </a> </td>
|
|
114
|
+
<td> false </td>
|
|
115
|
+
<td> false </td>
|
|
116
|
+
<td> Scalar </td>
|
|
117
|
+
<td> READ </td>
|
|
118
|
+
<td> Tango::DEV_STRING </td>
|
|
119
|
+
<td> EXPERT </td>
|
|
120
|
+
<td> XML for merged components without applied variables </td>
|
|
121
|
+
</tr>
|
|
112
122
|
</table>
|
|
113
123
|
<br><br>
|
|
114
124
|
<hr>
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
<li> <a href="FullDocument.html#attrLinkDataSources"> LinkDataSources </a>
|
|
56
56
|
<li> <a href="FullDocument.html#attrCanFailDataSources"> CanFailDataSources </a>
|
|
57
57
|
<li> <a href="FullDocument.html#attrExtraLinkDataSources"> ExtraLinkDataSources </a>
|
|
58
|
+
<li> <a href="FullDocument.html#attrMergedXML"> MergedXML </a>
|
|
58
59
|
</ul>
|
|
59
60
|
<li> <a href="FullDocument.html#states"> States </a>
|
|
60
61
|
</ul>
|
|
@@ -1898,6 +1899,16 @@
|
|
|
1898
1899
|
<td> OPERATOR </td>
|
|
1899
1900
|
<td> JSON list of datasources to which links will be added </td>
|
|
1900
1901
|
</tr>
|
|
1902
|
+
<tr>
|
|
1903
|
+
<td> <a href="AttrMergedXML.html"> MergedXML </a> </td>
|
|
1904
|
+
<td> false </td>
|
|
1905
|
+
<td> false </td>
|
|
1906
|
+
<td> Scalar </td>
|
|
1907
|
+
<td> READ </td>
|
|
1908
|
+
<td> Tango::DEV_STRING </td>
|
|
1909
|
+
<td> EXPERT </td>
|
|
1910
|
+
<td> XML for merged components without applied variables </td>
|
|
1911
|
+
</tr>
|
|
1901
1912
|
</table>
|
|
1902
1913
|
<br><br>
|
|
1903
1914
|
<hr>
|
|
@@ -3409,6 +3420,169 @@
|
|
|
3409
3420
|
</table>
|
|
3410
3421
|
<br><br>
|
|
3411
3422
|
<hr>
|
|
3423
|
+
<a name="attrMergedXML"> </a>
|
|
3424
|
+
<br><br><br>
|
|
3425
|
+
<font size="+1"><u><b> Attribute MergedXML : </b></u></font>
|
|
3426
|
+
<ul>
|
|
3427
|
+
XML for merged components without applied variables
|
|
3428
|
+
</ul>
|
|
3429
|
+
<br><br><br>
|
|
3430
|
+
<Table Border=0 Cellpadding=0 CELLSPACING=20>
|
|
3431
|
+
<TR>
|
|
3432
|
+
<TD ALIGN="left" VALIGN=top>
|
|
3433
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3434
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3435
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Definition </b></font></center></td>
|
|
3436
|
+
</tr>
|
|
3437
|
+
<tr>
|
|
3438
|
+
<td> Attribute Type </td>
|
|
3439
|
+
<td> Scalar </td>
|
|
3440
|
+
</tr>
|
|
3441
|
+
<tr>
|
|
3442
|
+
<td> R/W Type </td>
|
|
3443
|
+
<td> READ </td>
|
|
3444
|
+
</tr>
|
|
3445
|
+
<tr>
|
|
3446
|
+
<td> Data Type </td>
|
|
3447
|
+
<td> Tango::DEV_STRING </td>
|
|
3448
|
+
</tr>
|
|
3449
|
+
<tr>
|
|
3450
|
+
<td> Display Level </td>
|
|
3451
|
+
<td> EXPERT </td>
|
|
3452
|
+
</tr>
|
|
3453
|
+
<tr>
|
|
3454
|
+
<td> Inherited </td>
|
|
3455
|
+
<td> false </td>
|
|
3456
|
+
</tr>
|
|
3457
|
+
<tr>
|
|
3458
|
+
<td> Abstract </td>
|
|
3459
|
+
<td> false </td>
|
|
3460
|
+
</tr>
|
|
3461
|
+
<tr>
|
|
3462
|
+
<td> Polling Period </td>
|
|
3463
|
+
<td> Not polled </td>
|
|
3464
|
+
</tr>
|
|
3465
|
+
<tr>
|
|
3466
|
+
<td> Memorized </td>
|
|
3467
|
+
<td> Not set </td>
|
|
3468
|
+
</tr>
|
|
3469
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3470
|
+
<tr>
|
|
3471
|
+
<td> Read NOT allowed for </td>
|
|
3472
|
+
<td> <font size="-1"> <li> ON </li> <li> RUNNING </li> </font> </td>
|
|
3473
|
+
</tr>
|
|
3474
|
+
</table>
|
|
3475
|
+
</td>
|
|
3476
|
+
<TD ALIGN="Center" VALIGN=top>
|
|
3477
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3478
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3479
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Properties </b></font></center></td>
|
|
3480
|
+
</tr>
|
|
3481
|
+
<tr>
|
|
3482
|
+
<td> label </td>
|
|
3483
|
+
<td> XML for merged components </td>
|
|
3484
|
+
</tr>
|
|
3485
|
+
<tr>
|
|
3486
|
+
<td> unit </td>
|
|
3487
|
+
<td> </td>
|
|
3488
|
+
</tr>
|
|
3489
|
+
<tr>
|
|
3490
|
+
<td> standard unit </td>
|
|
3491
|
+
<td> </td>
|
|
3492
|
+
</tr>
|
|
3493
|
+
<tr>
|
|
3494
|
+
<td> display unit </td>
|
|
3495
|
+
<td> </td>
|
|
3496
|
+
</tr>
|
|
3497
|
+
<tr>
|
|
3498
|
+
<td> format </td>
|
|
3499
|
+
<td> </td>
|
|
3500
|
+
</tr>
|
|
3501
|
+
<tr>
|
|
3502
|
+
<td> max_value </td>
|
|
3503
|
+
<td> </td>
|
|
3504
|
+
</tr>
|
|
3505
|
+
<tr>
|
|
3506
|
+
<td> min_value </td>
|
|
3507
|
+
<td> </td>
|
|
3508
|
+
</tr>
|
|
3509
|
+
<tr>
|
|
3510
|
+
<td> max_alarm </td>
|
|
3511
|
+
<td> </td>
|
|
3512
|
+
</tr>
|
|
3513
|
+
<tr>
|
|
3514
|
+
<td> min_alarm </td>
|
|
3515
|
+
<td> </td>
|
|
3516
|
+
</tr>
|
|
3517
|
+
<tr>
|
|
3518
|
+
<td> max_warning </td>
|
|
3519
|
+
<td> </td>
|
|
3520
|
+
</tr>
|
|
3521
|
+
<tr>
|
|
3522
|
+
<td> min_warning </td>
|
|
3523
|
+
<td> </td>
|
|
3524
|
+
</tr>
|
|
3525
|
+
<tr>
|
|
3526
|
+
<td> delta_time </td>
|
|
3527
|
+
<td> </td>
|
|
3528
|
+
</tr>
|
|
3529
|
+
<tr>
|
|
3530
|
+
<td> delta_val </td>
|
|
3531
|
+
<td> </td>
|
|
3532
|
+
</tr>
|
|
3533
|
+
</table>
|
|
3534
|
+
</td>
|
|
3535
|
+
<TD ALIGN="Right" VALIGN=top>
|
|
3536
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3537
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3538
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Event Criteria </b></font></center></td>
|
|
3539
|
+
</tr>
|
|
3540
|
+
<tr>
|
|
3541
|
+
<td> Periodic </td>
|
|
3542
|
+
<td> Not set </td>
|
|
3543
|
+
</tr>
|
|
3544
|
+
<tr>
|
|
3545
|
+
<td> Relative Change </td>
|
|
3546
|
+
<td> Not set </td>
|
|
3547
|
+
</tr>
|
|
3548
|
+
<tr>
|
|
3549
|
+
<td> Absolute Change </td>
|
|
3550
|
+
<td> Not set </td>
|
|
3551
|
+
</tr>
|
|
3552
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3553
|
+
<tr>
|
|
3554
|
+
<td> Archive Periodic </td>
|
|
3555
|
+
<td> Not set </td>
|
|
3556
|
+
</tr>
|
|
3557
|
+
<tr>
|
|
3558
|
+
<td> Archive Relative Change </td>
|
|
3559
|
+
<td> Not set </td>
|
|
3560
|
+
</tr>
|
|
3561
|
+
<tr>
|
|
3562
|
+
<td> Archive Absolute Change </td>
|
|
3563
|
+
<td> Not set </td>
|
|
3564
|
+
</tr>
|
|
3565
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3566
|
+
<tr>
|
|
3567
|
+
<td> Push Change event by user code </td>
|
|
3568
|
+
<td> false </td>
|
|
3569
|
+
</tr>
|
|
3570
|
+
<Tr BGCOLOR="#CCCCFF"><Td> </Td><Td> </Td></Tr>
|
|
3571
|
+
<tr>
|
|
3572
|
+
<td> Push Archive event by user code </td>
|
|
3573
|
+
<td> false </td>
|
|
3574
|
+
</tr>
|
|
3575
|
+
<Tr BGCOLOR="#CCCCFF"><Td> </Td><Td> </Td></Tr>
|
|
3576
|
+
<tr>
|
|
3577
|
+
<td> Push DataReady event by user code </td>
|
|
3578
|
+
<td> false </td>
|
|
3579
|
+
</tr>
|
|
3580
|
+
</table>
|
|
3581
|
+
</td>
|
|
3582
|
+
</TR>
|
|
3583
|
+
</table>
|
|
3584
|
+
<br><br>
|
|
3585
|
+
<hr>
|
|
3412
3586
|
<br><br>
|
|
3413
3587
|
<hr>
|
|
3414
3588
|
<a name="states"> </a>
|
|
@@ -77,6 +77,8 @@ class Merger(object):
|
|
|
77
77
|
|
|
78
78
|
#: (:obj:`xml.etree.ElementTree.Element`) DOM root node
|
|
79
79
|
self.__root = None
|
|
80
|
+
#: (:obj:`bool`) do not merge node on false
|
|
81
|
+
self.skip = False
|
|
80
82
|
#: (:obj:`list` <:obj:`str`> ) tags which cannot have the same siblings
|
|
81
83
|
self.singles = ['strategy', 'dimensions', 'definition',
|
|
82
84
|
'record', 'device', 'query', 'database',
|
|
@@ -223,11 +225,14 @@ class Merger(object):
|
|
|
223
225
|
text1 = unicode(self.__getText(elem1)).strip()
|
|
224
226
|
text2 = unicode(self.__getText(elem2)).strip()
|
|
225
227
|
if text1 != text2 and text1 and text2:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
if not self.skip:
|
|
229
|
+
raise IncompatibleNodeError(
|
|
230
|
+
"Incompatible \n%s element value\n%s \n%s "
|
|
231
|
+
% (str(self.__getAncestors(elem1, ancestors)),
|
|
232
|
+
text1, text2),
|
|
233
|
+
[elem1, elem2])
|
|
234
|
+
else:
|
|
235
|
+
status = False
|
|
231
236
|
return status
|
|
232
237
|
|
|
233
238
|
def __checkAttributes(self, elem1, elem2):
|
|
@@ -530,6 +535,10 @@ class Merger(object):
|
|
|
530
535
|
child, linkdatasources)
|
|
531
536
|
if dsnode is not None:
|
|
532
537
|
break
|
|
538
|
+
if dsname:
|
|
539
|
+
dsname = dsname.replace(" ", "_").replace("/", "_").replace(
|
|
540
|
+
":", "_").replace(".", "_").replace("\\", "_").replace(
|
|
541
|
+
";", "_").lower()
|
|
533
542
|
if dsnode is not None:
|
|
534
543
|
path = []
|
|
535
544
|
path = [(node.get("name"), dsname)]
|
|
@@ -135,6 +135,26 @@ class NXSConfigServer(tango.LatestDeviceImpl):
|
|
|
135
135
|
return False
|
|
136
136
|
return True
|
|
137
137
|
|
|
138
|
+
def read_MergedXML(self, attr):
|
|
139
|
+
""" Read MergedXML attribute
|
|
140
|
+
|
|
141
|
+
:param attr: xml string attribute
|
|
142
|
+
:type attr: :class:`tango.Attribute`
|
|
143
|
+
"""
|
|
144
|
+
self.debug_stream("In read_MergedXML()")
|
|
145
|
+
attr.set_value(self.xmlc.mergedxml)
|
|
146
|
+
|
|
147
|
+
def is_MergedXML_allowed(self, _):
|
|
148
|
+
""" MergedXML attribute State Machine
|
|
149
|
+
|
|
150
|
+
:returns: True if the operation allowed
|
|
151
|
+
:rtype: :obj:`bool`
|
|
152
|
+
"""
|
|
153
|
+
if self.get_state() in [tango.DevState.ON,
|
|
154
|
+
tango.DevState.RUNNING]:
|
|
155
|
+
return False
|
|
156
|
+
return True
|
|
157
|
+
|
|
138
158
|
def read_Selection(self, attr):
|
|
139
159
|
""" Read Selection attribute
|
|
140
160
|
|
|
@@ -765,6 +785,7 @@ class NXSConfigServer(tango.LatestDeviceImpl):
|
|
|
765
785
|
|
|
766
786
|
:brief: Creates the NDTS configuration script from the
|
|
767
787
|
given components. The result is strored in XMLString
|
|
788
|
+
and MergedXML
|
|
768
789
|
|
|
769
790
|
:param argin: DevVarStringArray list of component names
|
|
770
791
|
:type argin: :obj:`list` <:obj:`str`>
|
|
@@ -1316,6 +1337,16 @@ class NXSConfigServerClass(tango.DeviceClass):
|
|
|
1316
1337
|
"it contains the resulting XML configuration.",
|
|
1317
1338
|
'Display level': tango.DispLevel.EXPERT,
|
|
1318
1339
|
}],
|
|
1340
|
+
'MergedXML':
|
|
1341
|
+
[[tango.DevString,
|
|
1342
|
+
tango.SCALAR,
|
|
1343
|
+
tango.READ],
|
|
1344
|
+
{
|
|
1345
|
+
'label': "XML for merged components",
|
|
1346
|
+
'description':
|
|
1347
|
+
"XML for merged components without applied variables ",
|
|
1348
|
+
'Display level': tango.DispLevel.EXPERT,
|
|
1349
|
+
}],
|
|
1319
1350
|
'Selection':
|
|
1320
1351
|
[[tango.DevString,
|
|
1321
1352
|
tango.SCALAR,
|
|
@@ -86,6 +86,8 @@ class XMLConfigurator(object):
|
|
|
86
86
|
self._streams = StreamSet(weakref.ref(server) if server else None)
|
|
87
87
|
#: (:obj:`str`) XML config string
|
|
88
88
|
self.xmlstring = ""
|
|
89
|
+
#: (:obj:`str`) Merged coponents in XML string without variables
|
|
90
|
+
self.mergedxml = ""
|
|
89
91
|
#: (:obj:`str`) component selection
|
|
90
92
|
self.selection = "{}"
|
|
91
93
|
#: (:obj:`str`) JSON string with arguments to connect to database
|
|
@@ -976,13 +978,18 @@ class XMLConfigurator(object):
|
|
|
976
978
|
allnames = self.dependentComponents(
|
|
977
979
|
list(set(self.__mydb.mandatory() + names)))
|
|
978
980
|
comps = self.__mydb.components(list(set(allnames)))
|
|
981
|
+
xml = self.__merge(comps, skip=withVariables)
|
|
979
982
|
if withVariables:
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
+
self.mergedxml = xml or ""
|
|
984
|
+
if xml is not None:
|
|
985
|
+
comps = [xml]
|
|
986
|
+
cpvars = self.__variableComponentValues(comps)
|
|
987
|
+
comps = [self.__attachVariables(cp, cpvars)
|
|
988
|
+
for cp in comps]
|
|
989
|
+
xml = self.__merge(comps)
|
|
983
990
|
return xml if xml is not None else ""
|
|
984
991
|
|
|
985
|
-
def __merge(self, xmls):
|
|
992
|
+
def __merge(self, xmls, skip=False):
|
|
986
993
|
""" merges the give component xmls
|
|
987
994
|
|
|
988
995
|
:param xmls: list of component xmls
|
|
@@ -996,6 +1003,7 @@ class XMLConfigurator(object):
|
|
|
996
1003
|
mgr.extralinkdatasources = json.loads(self.extralinkdatasources)
|
|
997
1004
|
mgr.canfaildatasources = json.loads(self.canfaildatasources)
|
|
998
1005
|
mgr.extralinkpath = self.__splitExtraPath(self.extraLinkPath)
|
|
1006
|
+
mgr.skip = skip
|
|
999
1007
|
mgr.collect(xmls)
|
|
1000
1008
|
mgr.merge()
|
|
1001
1009
|
return mgr.toString()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nxsconfigserver
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.20.0
|
|
4
4
|
Summary: Configuration Server for Nexus Data Writer
|
|
5
5
|
Home-page: http://github.com/jkotan/nexdatas/nxsconfigserver
|
|
6
6
|
Author: Jan Kotanski, Eugen Wintersberger , Halil Pasic
|
|
@@ -98,21 +98,22 @@ with proper privileges.
|
|
|
98
98
|
Debian packages
|
|
99
99
|
^^^^^^^^^^^^^^^
|
|
100
100
|
|
|
101
|
-
Debian Bookworm, Bullseye
|
|
101
|
+
Debian Trixie, Bookworm, Bullseye and as well as Ubuntu Questing, Noble, Jammy packages can be found in the HDRI repository.
|
|
102
102
|
|
|
103
103
|
To install the debian packages, add the PGP repository key
|
|
104
104
|
|
|
105
105
|
.. code-block:: console
|
|
106
106
|
|
|
107
107
|
$ sudo su
|
|
108
|
-
$
|
|
108
|
+
$ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
|
|
109
|
+
$ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg
|
|
109
110
|
|
|
110
|
-
and then download the corresponding source list, e.g. for
|
|
111
|
+
and then download the corresponding source list, e.g. for trixie
|
|
111
112
|
|
|
112
113
|
.. code-block:: console
|
|
113
114
|
|
|
114
115
|
$ cd /etc/apt/sources.list.d
|
|
115
|
-
$ wget http://repos.pni-hdri.de/
|
|
116
|
+
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.sources
|
|
116
117
|
|
|
117
118
|
Finally, for python2 packages
|
|
118
119
|
|
|
@@ -134,6 +134,12 @@ class NXSConfigServerTest(XMLConfigurator_test.XMLConfiguratorTest):
|
|
|
134
134
|
def getXML(self, xmlc):
|
|
135
135
|
return xmlc.XMLString
|
|
136
136
|
|
|
137
|
+
# gets xmlconfiguration
|
|
138
|
+
# \param xmlc configuration instance
|
|
139
|
+
# \returns xml configuration string
|
|
140
|
+
def getMergedXML(self, xmlc):
|
|
141
|
+
return xmlc.MergedXML
|
|
142
|
+
|
|
137
143
|
|
|
138
144
|
if __name__ == '__main__':
|
|
139
145
|
unittest.main()
|
|
@@ -173,6 +173,12 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
173
173
|
def getXML(self, xmlc):
|
|
174
174
|
return xmlc.xmlstring
|
|
175
175
|
|
|
176
|
+
# gets merged xmlconfiguration
|
|
177
|
+
# \param xmlc configuration instance
|
|
178
|
+
# \returns xml configuration string
|
|
179
|
+
def getMergedXML(self, xmlc):
|
|
180
|
+
return xmlc.mergedxml
|
|
181
|
+
|
|
176
182
|
# sets selection configuration
|
|
177
183
|
# \param selectionc configuration instance
|
|
178
184
|
# \param selection selection configuration string
|
|
@@ -1196,9 +1202,11 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1196
1202
|
|
|
1197
1203
|
self.getXML(el)
|
|
1198
1204
|
self.assertEqual(self.getXML(el), '')
|
|
1205
|
+
self.assertEqual(self.getMergedXML(el), '')
|
|
1199
1206
|
self.assertEqual(el.createConfiguration([]), None)
|
|
1200
1207
|
self.getXML(el)
|
|
1201
1208
|
self.assertEqual(self.getXML(el), '')
|
|
1209
|
+
self.assertEqual(self.getMergedXML(el), '')
|
|
1202
1210
|
el.setMandatoryComponents(man)
|
|
1203
1211
|
el.close()
|
|
1204
1212
|
|
|
@@ -1241,12 +1249,19 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1241
1249
|
|
|
1242
1250
|
self.assertEqual(el.createConfiguration([name]), None)
|
|
1243
1251
|
xml = self.getXML(el)
|
|
1252
|
+
mxml = self.getMergedXML(el)
|
|
1244
1253
|
checkxmls(
|
|
1245
1254
|
self,
|
|
1246
1255
|
xml,
|
|
1247
1256
|
'<?xml version=\'1.0\' encoding=\'utf8\'?>'
|
|
1248
1257
|
'<definition><group type="NXentry"/>'
|
|
1249
1258
|
'</definition>')
|
|
1259
|
+
checkxmls(
|
|
1260
|
+
self,
|
|
1261
|
+
mxml,
|
|
1262
|
+
'<?xml version=\'1.0\' encoding=\'utf8\'?>'
|
|
1263
|
+
'<definition><group type="NXentry"/>'
|
|
1264
|
+
'</definition>')
|
|
1250
1265
|
|
|
1251
1266
|
self.assertEqual(el.deleteComponent(name), None)
|
|
1252
1267
|
self.__cmps.pop()
|
|
@@ -1280,6 +1295,7 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1280
1295
|
name = "mcs_test_component"
|
|
1281
1296
|
xml = "<?xml version='1.0' encoding='utf8'?><definition>" \
|
|
1282
1297
|
+ "<group type='NXentry' name='$var.myentry'/></definition>"
|
|
1298
|
+
oxml = xml
|
|
1283
1299
|
while name in avc:
|
|
1284
1300
|
name = name + '_1'
|
|
1285
1301
|
# print(avc
|
|
@@ -1299,21 +1315,29 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1299
1315
|
|
|
1300
1316
|
self.assertEqual(el.createConfiguration([name]), None)
|
|
1301
1317
|
xml = self.getXML(el)
|
|
1318
|
+
mxml = self.getMergedXML(el)
|
|
1302
1319
|
checkxmls(
|
|
1303
1320
|
self,
|
|
1304
1321
|
xml,
|
|
1305
1322
|
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1306
1323
|
'<group name="" type="NXentry"/></definition>')
|
|
1324
|
+
checkxmls(
|
|
1325
|
+
self,
|
|
1326
|
+
mxml, oxml)
|
|
1307
1327
|
|
|
1308
1328
|
el.variables = '{"myentry":"entry1"}'
|
|
1309
1329
|
self.assertEqual(el.createConfiguration([name]), None)
|
|
1310
1330
|
|
|
1311
1331
|
xml = self.getXML(el)
|
|
1332
|
+
mxml = self.getMergedXML(el)
|
|
1312
1333
|
checkxmls(
|
|
1313
1334
|
self,
|
|
1314
1335
|
xml,
|
|
1315
1336
|
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1316
1337
|
'<group name="entry1" type="NXentry"/></definition>')
|
|
1338
|
+
checkxmls(
|
|
1339
|
+
self,
|
|
1340
|
+
mxml, oxml)
|
|
1317
1341
|
|
|
1318
1342
|
self.assertEqual(el.deleteComponent(name), None)
|
|
1319
1343
|
self.__cmps.pop()
|
|
@@ -1376,16 +1400,23 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1376
1400
|
|
|
1377
1401
|
self.assertEqual(el.createConfiguration([name]), None)
|
|
1378
1402
|
xml = self.getXML(el)
|
|
1403
|
+
mxml = self.getMergedXML(el)
|
|
1379
1404
|
checkxmls(
|
|
1380
1405
|
self,
|
|
1381
1406
|
xml,
|
|
1382
1407
|
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1383
1408
|
'<group name="" type="NXentry"/></definition>')
|
|
1409
|
+
checkxmls(
|
|
1410
|
+
self,
|
|
1411
|
+
mxml,
|
|
1412
|
+
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1413
|
+
'<group name="$var.myentry" type="NXentry"/></definition>')
|
|
1384
1414
|
|
|
1385
1415
|
el.variables = '{}'
|
|
1386
1416
|
self.assertEqual(el.createConfiguration([name, name2]), None)
|
|
1387
1417
|
|
|
1388
1418
|
xml = self.getXML(el)
|
|
1419
|
+
mxml = self.getMergedXML(el)
|
|
1389
1420
|
checkxmls(
|
|
1390
1421
|
self,
|
|
1391
1422
|
xml,
|
|
@@ -1394,11 +1425,19 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1394
1425
|
'<doc>$var(myentry=entry2)</doc>'
|
|
1395
1426
|
'</definition>'
|
|
1396
1427
|
)
|
|
1428
|
+
checkxmls(
|
|
1429
|
+
self,
|
|
1430
|
+
mxml,
|
|
1431
|
+
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1432
|
+
'<doc>$var(myentry=entry2)</doc>'
|
|
1433
|
+
'<group type="NXentry" name="$var.myentry" /></definition>'
|
|
1434
|
+
)
|
|
1397
1435
|
|
|
1398
1436
|
el.variables = '{"myentry":"entry1"}'
|
|
1399
1437
|
self.assertEqual(el.createConfiguration([name, name2]), None)
|
|
1400
1438
|
|
|
1401
1439
|
xml = self.getXML(el)
|
|
1440
|
+
mxml = self.getMergedXML(el)
|
|
1402
1441
|
checkxmls(
|
|
1403
1442
|
self,
|
|
1404
1443
|
xml,
|
|
@@ -1406,6 +1445,12 @@ class XMLConfiguratorTest(unittest.TestCase):
|
|
|
1406
1445
|
'<group name="entry1" type="NXentry"/>'
|
|
1407
1446
|
'<doc>$var(myentry=entry2)</doc>'
|
|
1408
1447
|
'</definition>')
|
|
1448
|
+
checkxmls(
|
|
1449
|
+
self,
|
|
1450
|
+
mxml,
|
|
1451
|
+
'<?xml version=\'1.0\' encoding=\'utf8\'?><definition>'
|
|
1452
|
+
'<doc>$var(myentry=entry2)</doc>'
|
|
1453
|
+
'<group type="NXentry" name="$var.myentry" /></definition>')
|
|
1409
1454
|
|
|
1410
1455
|
self.assertEqual(el.deleteComponent(name2), None)
|
|
1411
1456
|
self.__cmps.pop()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nxsconfigserver-2.18.1 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|