nxsconfigserver 2.19.0__tar.gz → 2.21.1__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.
Files changed (109) hide show
  1. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian11_py3/Dockerfile +1 -1
  2. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/install.sh +5 -5
  3. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.github/workflows/tests.yml +3 -30
  4. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/ChangeLog +12 -0
  5. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/NXSConfigServer.xmi +13 -1
  6. {nxsconfigserver-2.19.0/nxsconfigserver.egg-info → nxsconfigserver-2.21.1}/PKG-INFO +6 -5
  7. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/README.rst +5 -4
  8. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/Attributes.html +10 -0
  9. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/Commands.html +2 -2
  10. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/FullDocument.html +181 -7
  11. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/Merger.py +45 -21
  12. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/NXSConfigServer.py +64 -0
  13. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/Release.py +1 -1
  14. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/XMLConfigurator.py +52 -18
  15. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1/nxsconfigserver.egg-info}/PKG-INFO +6 -5
  16. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/NXSConfigServer_test.py +6 -0
  17. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/XMLConfigurator_test.py +45 -0
  18. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian10_py2/Dockerfile +0 -0
  19. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian10_py3/Dockerfile +0 -0
  20. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian8_py2/Dockerfile +0 -0
  21. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian8_py3/Dockerfile +0 -0
  22. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian9_py2/Dockerfile +0 -0
  23. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/debian9_py3/Dockerfile +0 -0
  24. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/run.sh +0 -0
  25. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
  26. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
  27. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
  28. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
  29. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
  30. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.flake8 +0 -0
  31. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.gitignore +0 -0
  32. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/.oldtravis.yml +0 -0
  33. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/COPYRIGHT +0 -0
  34. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/MANIFEST.in +0 -0
  35. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/NXSConfigServer +0 -0
  36. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/conf/my.cnf +0 -0
  37. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/conf/mysql_create.sql +0 -0
  38. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc/Makefile +0 -0
  39. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc/conf.py +0 -0
  40. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc/index.rst +0 -0
  41. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc/make.bat +0 -0
  42. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc/nxsconfigserver.rst +0 -0
  43. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrCanFailDataSources.html +0 -0
  44. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrJSONSettings.html +0 -0
  45. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrLinkDataSources.html +0 -0
  46. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrSTEPDataSources.html +0 -0
  47. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrSelection.html +0 -0
  48. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrVariables.html +0 -0
  49. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrVersion.html +0 -0
  50. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/AttrXMLString.html +0 -0
  51. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/ClassDescription.html +0 -0
  52. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdAvailableComponents.html +0 -0
  53. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdAvailableDataSources.html +0 -0
  54. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdAvailableSelections.html +0 -0
  55. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdClose.html +0 -0
  56. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdComponentDataSources.html +0 -0
  57. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdComponentVariables.html +0 -0
  58. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdComponents.html +0 -0
  59. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdComponentsDataSources.html +0 -0
  60. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdComponentsVariables.html +0 -0
  61. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdCreateConfiguration.html +0 -0
  62. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdDataSources.html +0 -0
  63. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdDeleteComponent.html +0 -0
  64. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdDeleteDataSource.html +0 -0
  65. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdDeleteSelection.html +0 -0
  66. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdDependentComponents.html +0 -0
  67. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdInstantiatedComponents.html +0 -0
  68. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdMandatoryComponents.html +0 -0
  69. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdMerge.html +0 -0
  70. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdOpen.html +0 -0
  71. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdSelections.html +0 -0
  72. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdSetComponentDataSources.html +0 -0
  73. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdSetMandatoryComponents.html +0 -0
  74. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdState.html +0 -0
  75. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdStatus.html +0 -0
  76. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdStoreComponent.html +0 -0
  77. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdStoreDataSource.html +0 -0
  78. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdStoreSelection.html +0 -0
  79. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/CmdUnsetMandatoryComponents.html +0 -0
  80. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/Properties.html +0 -0
  81. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/States.html +0 -0
  82. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/TitleBanner.html +0 -0
  83. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/doc_html/index.html +0 -0
  84. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/man/NXSConfigServer.1 +0 -0
  85. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/ComponentParser.py +0 -0
  86. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/Errors.py +0 -0
  87. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/MYSQLDataBase.py +0 -0
  88. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/StreamSet.py +0 -0
  89. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver/__init__.py +0 -0
  90. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver.egg-info/SOURCES.txt +0 -0
  91. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver.egg-info/dependency_links.txt +0 -0
  92. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver.egg-info/not-zip-safe +0 -0
  93. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver.egg-info/requires.txt +0 -0
  94. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/nxsconfigserver.egg-info/top_level.txt +0 -0
  95. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/setup.cfg +0 -0
  96. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/setup.py +0 -0
  97. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/ComponentHandler_test.py +0 -0
  98. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/Errors_test.py +0 -0
  99. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/MYSQLDataBase_test.py +0 -0
  100. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/Merger_test.py +0 -0
  101. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/ServerSetUp.py +0 -0
  102. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/StreamSet_test.py +0 -0
  103. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/__init__.py +0 -0
  104. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/__main__.py +0 -0
  105. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/checks.py +0 -0
  106. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/test/main.py +0 -0
  107. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/tools/ndts.sql +0 -0
  108. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/tools/setupServer.py +0 -0
  109. {nxsconfigserver-2.19.0 → nxsconfigserver-2.21.1}/tools/simpleClient.py +0 -0
@@ -1,6 +1,6 @@
1
1
  FROM debian:bullseye
2
2
 
3
- MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
3
+ # MAINTAINER DESY, Jan Kotanski <jankotan@gmail.com>
4
4
 
5
5
  ENV DEBIAN_FRONTEND=noninteractive
6
6
 
@@ -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, debian10, ubuntu25.04, ubuntu24.04, ubuntu22.04]
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
- chmod +x .ci/run.sh
63
- chmod +x .ci/install.sh
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,15 @@
1
+ 2026-01-20 Jan Kotanski <jankotan@gmail.com>
2
+ * improve duplicated strategy and datasource tag merging (#94)
3
+ * tagged as v2.21.1
4
+
5
+ 2026-01-19 Jan Kotanski <jankotan@gmail.com>
6
+ * changed MergedXML to XMLCache attribute (#88)
7
+ * tagged as v2.21.0
8
+
9
+ 2026-01-16 Jan Kotanski <jankotan@gmail.com>
10
+ * add MergedXML attribute (#88)
11
+ * tagged as v2.20.0
12
+
1
13
  2025-07-29 Jan Kotanski <jankotan@gmail.com>
2
14
  * clear the link name (#79)
3
15
  * tagged as v2.19.0
@@ -164,7 +164,7 @@
164
164
  <excludedStates>ON</excludedStates>
165
165
  <excludedStates>RUNNING</excludedStates>
166
166
  </commands>
167
- <commands name="CreateConfiguration" description="Creates the NDTS configuration script from the given components. The result is strored in XMLString" execMethod="create_configuration" displayLevel="OPERATOR" polledPeriod="0">
167
+ <commands name="CreateCache" description="Creates the cache configuration script from the given components. The result is strored in XMLCache" execMethod="create_cache" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
168
168
  <argin description="list of component names">
169
169
  <type xsi:type="pogoDsl:StringArrayType"/>
170
170
  </argin>
@@ -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="XMLCache" 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.19.0
3
+ Version: 2.21.1
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, Buster and as well as Ubuntu Plucky, Noble, Jammy packages can be found in the HDRI repository.
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
- $ wget -q -O - http://repos.pni-hdri.de/debian_repo.pub.gpg | apt-key add -
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 bookworm
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/bookworm-pni-hdri.list
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, Buster and as well as Ubuntu Plucky, Noble, Jammy packages can be found in the HDRI repository.
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
- $ wget -q -O - http://repos.pni-hdri.de/debian_repo.pub.gpg | apt-key add -
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 bookworm
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/bookworm-pni-hdri.list
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="AttrXMLCache.html"> XMLCache </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>
@@ -114,11 +114,11 @@
114
114
  <td> Stores the DataSource from XMLString </td>
115
115
  </tr>
116
116
  <tr>
117
- <td> <a href="CmdCreateConfiguration.html"> CreateConfiguration </a> </td>
117
+ <td> <a href="CmdCreateCache.html"> CreateCache </a> </td>
118
118
  <td> DEVVAR_STRINGARRAY </td>
119
119
  <td> DEV_VOID </td>
120
120
  <td> OPERATOR </td>
121
- <td> Creates the NDTS configuration script from the given components. The result is strored in XMLString </td>
121
+ <td> Creates the cache configuration script from the given components. The result is strored in XMLCache </td>
122
122
  </tr>
123
123
  <tr>
124
124
  <td> <a href="CmdDeleteComponent.html"> DeleteComponent </a> </td>
@@ -28,7 +28,7 @@
28
28
  <li> <a href="FullDocument.html#cmdStoreSelection"> StoreSelection </a>
29
29
  <li> <a href="FullDocument.html#cmdStoreComponent"> StoreComponent </a>
30
30
  <li> <a href="FullDocument.html#cmdStoreDataSource"> StoreDataSource </a>
31
- <li> <a href="FullDocument.html#cmdCreateConfiguration"> CreateConfiguration </a>
31
+ <li> <a href="FullDocument.html#cmdCreateCache"> CreateCache </a>
32
32
  <li> <a href="FullDocument.html#cmdDeleteComponent"> DeleteComponent </a>
33
33
  <li> <a href="FullDocument.html#cmdDeleteSelection"> DeleteSelection </a>
34
34
  <li> <a href="FullDocument.html#cmdDeleteDataSource"> DeleteDataSource </a>
@@ -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#attrXMLCache"> XMLCache </a>
58
59
  </ul>
59
60
  <li> <a href="FullDocument.html#states"> States </a>
60
61
  </ul>
@@ -264,11 +265,11 @@
264
265
  <td> Stores the DataSource from XMLString </td>
265
266
  </tr>
266
267
  <tr>
267
- <td> <a href="CmdCreateConfiguration.html"> CreateConfiguration </a> </td>
268
+ <td> <a href="CmdCreateCache.html"> CreateCache </a> </td>
268
269
  <td> DEVVAR_STRINGARRAY </td>
269
270
  <td> DEV_VOID </td>
270
271
  <td> OPERATOR </td>
271
- <td> Creates the NDTS configuration script from the given components. The result is strored in XMLString </td>
272
+ <td> Creates the cache configuration script from the given components. The result is strored in XMLCache </td>
272
273
  </tr>
273
274
  <tr>
274
275
  <td> <a href="CmdDeleteComponent.html"> DeleteComponent </a> </td>
@@ -1056,16 +1057,16 @@
1056
1057
  </tr>
1057
1058
  </table>
1058
1059
  <br><br><hr>
1059
- <a name="cmdCreateConfiguration"> </a>
1060
+ <a name="cmdCreateCache"> </a>
1060
1061
  <br><br><br>
1061
- <font size="+1"><u><b> Command CreateConfiguration : </b></u></font>
1062
+ <font size="+1"><u><b> Command CreateCache : </b></u></font>
1062
1063
  <ul>
1063
- Creates the NDTS configuration script from the given components. The result is strored in XMLString
1064
+ Creates the cache configuration script from the given components. The result is strored in XMLCache
1064
1065
  </ul>
1065
1066
  <br><br><br>
1066
1067
  <Table Border=2 Cellpadding=3 CELLSPACING=0>
1067
1068
  <tr bgcolor="#CCCCFF" class="TableHeadingColor">
1068
- <td colspan=0> <font size=+1> <center><b> CreateConfiguration Definition </b></font></center></td>
1069
+ <td colspan=0> <font size=+1> <center><b> CreateCache Definition </b></font></center></td>
1069
1070
  </tr>
1070
1071
  <tr>
1071
1072
  <td> Input Argument </td>
@@ -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="AttrXMLCache.html"> XMLCache </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="attrXMLCache"> </a>
3424
+ <br><br><br>
3425
+ <font size="+1"><u><b> Attribute XMLCache : </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',
@@ -182,7 +184,7 @@ class Merger(object):
182
184
  res += ":" + name
183
185
  return res
184
186
 
185
- def __areMergeable(self, elem1, elem2, ancestors):
187
+ def __areMergeable(self, elem1, elem2, ancestors, node):
186
188
  """ checks if two elements are mergeable
187
189
 
188
190
  :param elem1: first element
@@ -214,20 +216,32 @@ class Merger(object):
214
216
  if tags:
215
217
  status = False
216
218
  if tagName in self.singles or (name1 and name1 == name2):
217
- raise IncompatibleNodeError(
218
- "Incompatible element attributes %s: %s"
219
- % (str(self.__getAncestors(elem1, ancestors)), str(tags)),
220
- [elem1, elem2])
219
+ if not self.skip:
220
+ if tags and tags[0] == ('TANGO', 'CLIENT'):
221
+ node.remove(elem2)
222
+ elif tags and tags[0] == ('CLIENT', 'TANGO'):
223
+ node.remove(elem1)
224
+ else:
225
+ raise IncompatibleNodeError(
226
+ "Incompatible element attributes %s: %s %s"
227
+ % (str(self.__getAncestors(elem1, ancestors)),
228
+ str(node.get("name")), str(tags)),
229
+ [elem1, elem2])
230
+ else:
231
+ status = False
221
232
 
222
233
  if tagName in self.uniqueText:
223
234
  text1 = unicode(self.__getText(elem1)).strip()
224
235
  text2 = unicode(self.__getText(elem2)).strip()
225
236
  if text1 != text2 and text1 and text2:
226
- raise IncompatibleNodeError(
227
- "Incompatible \n%s element value\n%s \n%s "
228
- % (str(self.__getAncestors(elem1, ancestors)),
229
- text1, text2),
230
- [elem1, elem2])
237
+ if not self.skip:
238
+ raise IncompatibleNodeError(
239
+ "Incompatible \n%s element value\n%s \n%s "
240
+ % (str(self.__getAncestors(elem1, ancestors)),
241
+ text1, text2),
242
+ [elem1, elem2])
243
+ else:
244
+ status = False
231
245
  return status
232
246
 
233
247
  def __checkAttributes(self, elem1, elem2):
@@ -325,6 +339,9 @@ class Merger(object):
325
339
 
326
340
  children = list(node)
327
341
  c1 = 0
342
+ if unicode(node.tag) in self.switchable and self.switchdatasources:
343
+ # print("NODE", node.tag, node.get("name"))
344
+ self.__switch(node)
328
345
  while c1 < len(children):
329
346
  child1 = children[c1]
330
347
  c2 = c1 + 1
@@ -333,7 +350,7 @@ class Merger(object):
333
350
  if child1 != child2:
334
351
  if self.__areMergeable(
335
352
  child1, child2,
336
- ancestors):
353
+ ancestors, node):
337
354
  self.__mergeNodes(child1, child2, node)
338
355
  children.pop(c2)
339
356
  c2 -= 1
@@ -354,8 +371,9 @@ class Merger(object):
354
371
 
355
372
  self.__mergeChildren(child, newancestors, entrynode,
356
373
  datanode, linknode)
357
- if cName in self.switchable and self.switchdatasources:
358
- self.__switch(child)
374
+ # if cName in self.switchable and self.switchdatasources:
375
+ # print("CHILD", child.tag, child.get("name"))
376
+ # self.__switch(child)
359
377
  if cName in self.linkable and self.linkdatasources:
360
378
  datanode = self.__addlink(
361
379
  child, newancestors, entrynode, datanode,
@@ -426,7 +444,8 @@ class Merger(object):
426
444
  :type node: :obj:`xml.etree.ElementTree.Element`
427
445
  """
428
446
  if node is not None:
429
- stnode = None
447
+ stnodes = []
448
+ modes = []
430
449
  mode = None
431
450
  dsname = None
432
451
  dsnode = None
@@ -451,13 +470,18 @@ class Merger(object):
451
470
  elif cName == 'strategy':
452
471
  mode = child.get("mode")
453
472
  if mode in self.modesToSwitch.keys():
454
- stnode = child
455
- else:
456
- break
457
- if stnode is not None and dsnode is not None:
458
- break
459
- if stnode is not None and dsnode is not None:
460
- stnode.attrib["mode"] = self.modesToSwitch[mode]
473
+ stnodes.append(child)
474
+ modes.append(mode)
475
+ # else:
476
+ # break
477
+ # if stnode not None and dsnode is not None:
478
+ # break
479
+ if stnodes and dsnode is not None:
480
+ for si, stn in enumerate(stnodes):
481
+ mode = modes[si]
482
+ if mode in self.modesToSwitch.keys():
483
+ stn.attrib["mode"] = self.modesToSwitch[mode]
484
+ # print("SWITCH", node.get("name"), dsname, dsnode)
461
485
 
462
486
  def __canfail(self, node):
463
487
  """ switch the given node to canfail mode