nxsconfigserver 2.19.0__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.
Files changed (109) hide show
  1. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian11_py3/Dockerfile +1 -1
  2. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/install.sh +5 -5
  3. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.github/workflows/tests.yml +3 -30
  4. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/ChangeLog +4 -0
  5. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/NXSConfigServer.xmi +13 -1
  6. {nxsconfigserver-2.19.0/nxsconfigserver.egg-info → nxsconfigserver-2.20.0}/PKG-INFO +6 -5
  7. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/README.rst +5 -4
  8. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/Attributes.html +10 -0
  9. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/FullDocument.html +174 -0
  10. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/Merger.py +10 -5
  11. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/NXSConfigServer.py +31 -0
  12. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/Release.py +1 -1
  13. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/XMLConfigurator.py +12 -4
  14. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0/nxsconfigserver.egg-info}/PKG-INFO +6 -5
  15. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/NXSConfigServer_test.py +6 -0
  16. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/XMLConfigurator_test.py +45 -0
  17. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian10_py2/Dockerfile +0 -0
  18. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian10_py3/Dockerfile +0 -0
  19. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian8_py2/Dockerfile +0 -0
  20. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian8_py3/Dockerfile +0 -0
  21. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian9_py2/Dockerfile +0 -0
  22. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/debian9_py3/Dockerfile +0 -0
  23. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/run.sh +0 -0
  24. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
  25. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
  26. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
  27. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
  28. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
  29. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.flake8 +0 -0
  30. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.gitignore +0 -0
  31. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/.oldtravis.yml +0 -0
  32. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/COPYRIGHT +0 -0
  33. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/MANIFEST.in +0 -0
  34. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/NXSConfigServer +0 -0
  35. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/conf/my.cnf +0 -0
  36. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/conf/mysql_create.sql +0 -0
  37. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc/Makefile +0 -0
  38. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc/conf.py +0 -0
  39. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc/index.rst +0 -0
  40. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc/make.bat +0 -0
  41. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc/nxsconfigserver.rst +0 -0
  42. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrCanFailDataSources.html +0 -0
  43. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrJSONSettings.html +0 -0
  44. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrLinkDataSources.html +0 -0
  45. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrSTEPDataSources.html +0 -0
  46. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrSelection.html +0 -0
  47. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrVariables.html +0 -0
  48. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrVersion.html +0 -0
  49. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/AttrXMLString.html +0 -0
  50. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/ClassDescription.html +0 -0
  51. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableComponents.html +0 -0
  52. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableDataSources.html +0 -0
  53. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdAvailableSelections.html +0 -0
  54. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdClose.html +0 -0
  55. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdComponentDataSources.html +0 -0
  56. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdComponentVariables.html +0 -0
  57. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdComponents.html +0 -0
  58. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdComponentsDataSources.html +0 -0
  59. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdComponentsVariables.html +0 -0
  60. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdCreateConfiguration.html +0 -0
  61. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdDataSources.html +0 -0
  62. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteComponent.html +0 -0
  63. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteDataSource.html +0 -0
  64. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdDeleteSelection.html +0 -0
  65. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdDependentComponents.html +0 -0
  66. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdInstantiatedComponents.html +0 -0
  67. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdMandatoryComponents.html +0 -0
  68. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdMerge.html +0 -0
  69. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdOpen.html +0 -0
  70. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdSelections.html +0 -0
  71. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdSetComponentDataSources.html +0 -0
  72. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdSetMandatoryComponents.html +0 -0
  73. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdState.html +0 -0
  74. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdStatus.html +0 -0
  75. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdStoreComponent.html +0 -0
  76. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdStoreDataSource.html +0 -0
  77. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdStoreSelection.html +0 -0
  78. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/CmdUnsetMandatoryComponents.html +0 -0
  79. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/Commands.html +0 -0
  80. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/Properties.html +0 -0
  81. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/States.html +0 -0
  82. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/TitleBanner.html +0 -0
  83. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/doc_html/index.html +0 -0
  84. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/man/NXSConfigServer.1 +0 -0
  85. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/ComponentParser.py +0 -0
  86. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/Errors.py +0 -0
  87. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/MYSQLDataBase.py +0 -0
  88. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/StreamSet.py +0 -0
  89. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver/__init__.py +0 -0
  90. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/SOURCES.txt +0 -0
  91. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/dependency_links.txt +0 -0
  92. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/not-zip-safe +0 -0
  93. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/requires.txt +0 -0
  94. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/nxsconfigserver.egg-info/top_level.txt +0 -0
  95. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/setup.cfg +0 -0
  96. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/setup.py +0 -0
  97. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/ComponentHandler_test.py +0 -0
  98. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/Errors_test.py +0 -0
  99. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/MYSQLDataBase_test.py +0 -0
  100. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/Merger_test.py +0 -0
  101. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/ServerSetUp.py +0 -0
  102. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/StreamSet_test.py +0 -0
  103. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/__init__.py +0 -0
  104. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/__main__.py +0 -0
  105. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/checks.py +0 -0
  106. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/test/main.py +0 -0
  107. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/tools/ndts.sql +0 -0
  108. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/tools/setupServer.py +0 -0
  109. {nxsconfigserver-2.19.0 → nxsconfigserver-2.20.0}/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,7 @@
1
+ 2026-01-16 Jan Kotanski <jankotan@gmail.com>
2
+ * add MergedXML attribute (#88)
3
+ * tagged as v2.20.0
4
+
1
5
  2025-07-29 Jan Kotanski <jankotan@gmail.com>
2
6
  * clear the link name (#79)
3
7
  * tagged as v2.19.0
@@ -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&#xA;on a MySQL database. It allows to store XML configuration datasources&#xA;and components. It also gives possibility to select mandatory components&#xA;and perform the process of component merging.&#xA;&#xA;Source code: https://github.com/nexdatas/nxsconfigserver/&#xA;Web page: https://nexdatas.github.io/nxsconfigserver/&#xA;NexDaTaS Web page: https://nexdatas.github.io&#xA;" title="Configuration Server for Nexus Data Writer" sourcePath="/home/jkotan/ndts/nxsconfigserver" language="Python" filestogenerate="XMI file,Code files,Protected Regions,html Pages" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false" descriptionHtmlExists="false">
4
+ <description description="NeXuS Configuration Server is a Tango Server with its implementation based&#xA;on a MySQL database. It allows to store XML configuration datasources&#xA;and components. It also gives possibility to select mandatory components&#xA;and perform the process of component merging.&#xA;&#xA;Source code: https://github.com/nexdatas/nxsconfigserver/&#xA;Web page: https://nexdatas.github.io/nxsconfigserver/&#xA;NexDaTaS Web page: https://nexdatas.github.io&#xA;" 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.19.0
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, 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="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
- raise IncompatibleNodeError(
227
- "Incompatible \n%s element value\n%s \n%s "
228
- % (str(self.__getAncestors(elem1, ancestors)),
229
- text1, text2),
230
- [elem1, elem2])
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):
@@ -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,
@@ -20,4 +20,4 @@
20
20
  """ release version module """
21
21
 
22
22
  #: version number
23
- __version__ = "2.19.0"
23
+ __version__ = "2.20.0"
@@ -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
- cpvars = self.__variableComponentValues(comps)
981
- comps = [self.__attachVariables(cp, cpvars) for cp in comps]
982
- xml = self.__merge(comps)
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.19.0
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, 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
 
@@ -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()