nxsconfigserver 2.16.0__tar.gz → 2.17.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.16.0 → nxsconfigserver-2.17.0}/ChangeLog +4 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/NXSConfigServer.xmi +17 -4
- {nxsconfigserver-2.16.0/nxsconfigserver.egg-info → nxsconfigserver-2.17.0}/PKG-INFO +1 -1
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/Attributes.html +10 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/FullDocument.html +184 -46
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/Properties.html +6 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/Merger.py +101 -29
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/NXSConfigServer.py +48 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/Release.py +1 -1
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/XMLConfigurator.py +63 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0/nxsconfigserver.egg-info}/PKG-INFO +1 -1
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/Merger_test.py +308 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/XMLConfigurator_test.py +6 -2
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian10_py2/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian10_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian11_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian8_py2/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian8_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian9_py2/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/debian9_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/install.sh +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/run.sh +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/ubuntu16.04_py2/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/ubuntu16.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/ubuntu18.04_py2/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/ubuntu18.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.ci/ubuntu20.04_py3/Dockerfile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.flake8 +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.github/workflows/tests.yml +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.gitignore +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/.oldtravis.yml +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/COPYRIGHT +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/MANIFEST.in +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/NXSConfigServer +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/README.rst +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/conf/my.cnf +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/conf/mysql_create.sql +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc/Makefile +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc/conf.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc/index.rst +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc/make.bat +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc/nxsconfigserver.rst +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrCanFailDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrJSONSettings.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrLinkDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrSTEPDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrSelection.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrVariables.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrVersion.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/AttrXMLString.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/ClassDescription.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdAvailableComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdAvailableDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdAvailableSelections.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdClose.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdComponentDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdComponentVariables.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdComponentsDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdComponentsVariables.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdCreateConfiguration.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdDeleteComponent.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdDeleteDataSource.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdDeleteSelection.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdDependentComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdInstantiatedComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdMandatoryComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdMerge.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdOpen.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdSelections.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdSetComponentDataSources.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdSetMandatoryComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdState.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdStatus.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdStoreComponent.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdStoreDataSource.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdStoreSelection.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/CmdUnsetMandatoryComponents.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/Commands.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/States.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/TitleBanner.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/doc_html/index.html +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/man/NXSConfigServer.1 +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/ComponentParser.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/Errors.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/MYSQLDataBase.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/StreamSet.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver/__init__.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver.egg-info/SOURCES.txt +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver.egg-info/dependency_links.txt +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver.egg-info/not-zip-safe +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver.egg-info/requires.txt +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/nxsconfigserver.egg-info/top_level.txt +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/setup.cfg +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/setup.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/ComponentHandler_test.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/Errors_test.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/MYSQLDataBase_test.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/NXSConfigServer_test.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/ServerSetUp.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/StreamSet_test.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/__init__.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/__main__.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/checks.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/test/main.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/tools/ndts.sql +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/tools/setupServer.py +0 -0
- {nxsconfigserver-2.16.0 → nxsconfigserver-2.17.0}/tools/simpleClient.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="ASCII"?>
|
|
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://
|
|
3
|
-
<classes name="NXSConfigServer" pogoRevision="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/
|
|
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
|
+
<classes name="NXSConfigServer" pogoRevision="9.8">
|
|
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/nxsconfigserver" language="Python" filestogenerate="XMI file,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>
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
11
11
|
<DefaultPropValue>"XCS"</DefaultPropValue>
|
|
12
12
|
</deviceProperties>
|
|
13
|
+
<deviceProperties name="ExtraLinkPath" description="extra link path below NXentry, default: instrument:NXinstrument/collection:NXcollection">
|
|
14
|
+
<type xsi:type="pogoDsl:StringType"/>
|
|
15
|
+
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
16
|
+
<DefaultPropValue>"instrument:NXinstrument/collection:NXcollection"</DefaultPropValue>
|
|
17
|
+
</deviceProperties>
|
|
13
18
|
<commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
|
|
14
19
|
<argin description="none">
|
|
15
20
|
<type xsi:type="pogoDsl:VoidType"/>
|
|
@@ -387,6 +392,14 @@
|
|
|
387
392
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
388
393
|
<properties description="JSON list of datasources to be switched into CanFail mode during creating configuration process" label="Datasources to be switched into CanFail mode" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
|
|
389
394
|
</attributes>
|
|
395
|
+
<attributes name="ExtraLinkDataSources" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
|
|
396
|
+
<dataType xsi:type="pogoDsl:StringType"/>
|
|
397
|
+
<changeEvent fire="false" libCheckCriteria="false"/>
|
|
398
|
+
<archiveEvent fire="false" libCheckCriteria="false"/>
|
|
399
|
+
<dataReadyEvent fire="false" libCheckCriteria="true"/>
|
|
400
|
+
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
401
|
+
<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=""/>
|
|
402
|
+
</attributes>
|
|
390
403
|
<states name="ON" description="Server is ON">
|
|
391
404
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
392
405
|
</states>
|
|
@@ -396,6 +409,6 @@
|
|
|
396
409
|
<states name="RUNNING" description="Performing a query">
|
|
397
410
|
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
|
|
398
411
|
</states>
|
|
399
|
-
<preferences docHome="./doc_html" makefileHome="/
|
|
412
|
+
<preferences docHome="./doc_html" makefileHome="$(TANGO_DIR)/Libraries/cppserver/common"/>
|
|
400
413
|
</classes>
|
|
401
414
|
</pogoDsl:PogoSystem>
|
|
@@ -99,6 +99,16 @@
|
|
|
99
99
|
<td> OPERATOR </td>
|
|
100
100
|
<td> JSON list of datasources to be switched into CanFail mode during creating configuration process </td>
|
|
101
101
|
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td> <a href="AttrExtraLinkDataSources.html"> ExtraLinkDataSources </a> </td>
|
|
104
|
+
<td> false </td>
|
|
105
|
+
<td> false </td>
|
|
106
|
+
<td> Scalar </td>
|
|
107
|
+
<td> READ_WRITE </td>
|
|
108
|
+
<td> Tango::DEV_STRING </td>
|
|
109
|
+
<td> OPERATOR </td>
|
|
110
|
+
<td> JSON list of datasources to which links will be added </td>
|
|
111
|
+
</tr>
|
|
102
112
|
</table>
|
|
103
113
|
<br><br>
|
|
104
114
|
<hr>
|
|
@@ -4,52 +4,6 @@
|
|
|
4
4
|
<title> NXSConfigServer Tango Class User‘s Guide </title>
|
|
5
5
|
</head>
|
|
6
6
|
<body text="Black" bgcolor="White" link="Blue" vlink="Purple" alink="Red">
|
|
7
|
-
<table border="0" width="100%" cellspacing="0" cellpadding="0" >
|
|
8
|
-
<td align="center">
|
|
9
|
-
<a href="http://www.esrf.fr/" target=new>
|
|
10
|
-
<img src="http://www.esrf.fr/gifs/logo/80.gif" border=0 height="35"></a>
|
|
11
|
-
</td>
|
|
12
|
-
<td align="center">
|
|
13
|
-
<a href="http://www.elettra.trieste.it/" target=new>
|
|
14
|
-
<img src="http://www.esrf.fr/computing/cs/tango/elettra_logo.gif" border=0 height="35"></a>
|
|
15
|
-
</td>
|
|
16
|
-
<td align="center">
|
|
17
|
-
<a href="http://www.synchrotron-soleil.fr/" target=new>
|
|
18
|
-
<img src="http://www.esrf.fr/computing/cs/tango/soleil_logo.gif" border=0 height="35"></a>
|
|
19
|
-
</td>
|
|
20
|
-
<td align="center">
|
|
21
|
-
<a href="http://www.cells.es/" target=new>
|
|
22
|
-
<img src="http://www.esrf.fr/computing/cs/tango/alba.jpg" border=0 height="27"></a>
|
|
23
|
-
</td>
|
|
24
|
-
<td align="center">
|
|
25
|
-
<a href="http://www.tango-controls.org/" target="_top">
|
|
26
|
-
<img src="http://www.esrf.fr/computing/cs/tango/tango_logo.jpg" alt="" height="40" /></a>
|
|
27
|
-
</td>
|
|
28
|
-
<td align="center">
|
|
29
|
-
<a href="http://www.desy.de/html/home/index_eng.html" target=new>
|
|
30
|
-
<img src="http://www.esrf.fr/computing/cs/tango/desy.gif" border=0 height="26"></a>
|
|
31
|
-
</td>
|
|
32
|
-
<td align="center">
|
|
33
|
-
<a href="http://www.maxlab.lu.se/maxlab/max4/index.html" target=new>
|
|
34
|
-
<img src="http://www.esrf.fr/computing/cs/tango/maxlab.gif" border=0 height="21"></a>
|
|
35
|
-
</td>
|
|
36
|
-
<td align="center">
|
|
37
|
-
<a href="http://www.frm2.tum.de/en/index.html" target=new>
|
|
38
|
-
<img src="http://www.esrf.fr/computing/cs/tango/frm-2.jpg" border=0 height="24"></a>
|
|
39
|
-
</td>
|
|
40
|
-
<td align="center">
|
|
41
|
-
<a href="http://www.synchrotron.uj.edu.pl/" target=new>
|
|
42
|
-
<img src="http://www.esrf.fr/computing/cs/tango/solaris_logo.gif" border=0 height="21"></a>
|
|
43
|
-
</td>
|
|
44
|
-
<td align="center">
|
|
45
|
-
<a href="http://www.anka.kit.edu/english/28.php" target=new>
|
|
46
|
-
<img src="http://www.esrf.fr/computing/cs/tango/anka_blau_rot.png" border=0 height="25"></a>
|
|
47
|
-
</td>
|
|
48
|
-
<td align="center">
|
|
49
|
-
<a href="http://www.eli-hu.hu/" target=new>
|
|
50
|
-
<img src="http://www.esrf.fr/computing/cs/tango/eli-alps.jpg" border=0 height="32"></a>
|
|
51
|
-
</td>
|
|
52
|
-
</table>
|
|
53
7
|
<hr>
|
|
54
8
|
<br>
|
|
55
9
|
<center><h2><u><b> NXSConfigServer Tango Python Class </b></u></h2></center> <br><br>
|
|
@@ -99,6 +53,7 @@
|
|
|
99
53
|
<li> <a href="FullDocument.html#attrSTEPDataSources"> STEPDataSources </a>
|
|
100
54
|
<li> <a href="FullDocument.html#attrLinkDataSources"> LinkDataSources </a>
|
|
101
55
|
<li> <a href="FullDocument.html#attrCanFailDataSources"> CanFailDataSources </a>
|
|
56
|
+
<li> <a href="FullDocument.html#attrExtraLinkDataSources"> ExtraLinkDataSources </a>
|
|
102
57
|
</ul>
|
|
103
58
|
<li> <a href="FullDocument.html#states"> States </a>
|
|
104
59
|
</ul>
|
|
@@ -188,6 +143,12 @@
|
|
|
188
143
|
<td> String </td>
|
|
189
144
|
<td> "XCS" <br> </td>
|
|
190
145
|
</tr>
|
|
146
|
+
<tr>
|
|
147
|
+
<td> ExtraLinkPath </td>
|
|
148
|
+
<td> extra link path below NXentry, default: instrument:NXinstrument/collection:NXcollection </td>
|
|
149
|
+
<td> String </td>
|
|
150
|
+
<td> "instrument:NXinstrument/collection:NXcollection" <br> </td>
|
|
151
|
+
</tr>
|
|
191
152
|
</table>
|
|
192
153
|
<br><br>
|
|
193
154
|
<hr>
|
|
@@ -1870,6 +1831,16 @@
|
|
|
1870
1831
|
<td> OPERATOR </td>
|
|
1871
1832
|
<td> JSON list of datasources to be switched into CanFail mode during creating configuration process </td>
|
|
1872
1833
|
</tr>
|
|
1834
|
+
<tr>
|
|
1835
|
+
<td> <a href="AttrExtraLinkDataSources.html"> ExtraLinkDataSources </a> </td>
|
|
1836
|
+
<td> false </td>
|
|
1837
|
+
<td> false </td>
|
|
1838
|
+
<td> Scalar </td>
|
|
1839
|
+
<td> READ_WRITE </td>
|
|
1840
|
+
<td> Tango::DEV_STRING </td>
|
|
1841
|
+
<td> OPERATOR </td>
|
|
1842
|
+
<td> JSON list of datasources to which links will be added </td>
|
|
1843
|
+
</tr>
|
|
1873
1844
|
</table>
|
|
1874
1845
|
<br><br>
|
|
1875
1846
|
<hr>
|
|
@@ -3214,6 +3185,173 @@
|
|
|
3214
3185
|
</table>
|
|
3215
3186
|
<br><br>
|
|
3216
3187
|
<hr>
|
|
3188
|
+
<a name="attrExtraLinkDataSources"> </a>
|
|
3189
|
+
<br><br><br>
|
|
3190
|
+
<font size="+1"><u><b> Attribute ExtraLinkDataSources : </b></u></font>
|
|
3191
|
+
<ul>
|
|
3192
|
+
JSON list of datasources to which links will be added
|
|
3193
|
+
</ul>
|
|
3194
|
+
<br><br><br>
|
|
3195
|
+
<Table Border=0 Cellpadding=0 CELLSPACING=20>
|
|
3196
|
+
<TR>
|
|
3197
|
+
<TD ALIGN="left" VALIGN=top>
|
|
3198
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3199
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3200
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Definition </b></font></center></td>
|
|
3201
|
+
</tr>
|
|
3202
|
+
<tr>
|
|
3203
|
+
<td> Attribute Type </td>
|
|
3204
|
+
<td> Scalar </td>
|
|
3205
|
+
</tr>
|
|
3206
|
+
<tr>
|
|
3207
|
+
<td> R/W Type </td>
|
|
3208
|
+
<td> READ_WRITE </td>
|
|
3209
|
+
</tr>
|
|
3210
|
+
<tr>
|
|
3211
|
+
<td> Data Type </td>
|
|
3212
|
+
<td> Tango::DEV_STRING </td>
|
|
3213
|
+
</tr>
|
|
3214
|
+
<tr>
|
|
3215
|
+
<td> Display Level </td>
|
|
3216
|
+
<td> OPERATOR </td>
|
|
3217
|
+
</tr>
|
|
3218
|
+
<tr>
|
|
3219
|
+
<td> Inherited </td>
|
|
3220
|
+
<td> false </td>
|
|
3221
|
+
</tr>
|
|
3222
|
+
<tr>
|
|
3223
|
+
<td> Abstract </td>
|
|
3224
|
+
<td> false </td>
|
|
3225
|
+
</tr>
|
|
3226
|
+
<tr>
|
|
3227
|
+
<td> Polling Period </td>
|
|
3228
|
+
<td> Not polled </td>
|
|
3229
|
+
</tr>
|
|
3230
|
+
<tr>
|
|
3231
|
+
<td> Memorized </td>
|
|
3232
|
+
<td> Not set </td>
|
|
3233
|
+
</tr>
|
|
3234
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3235
|
+
<tr>
|
|
3236
|
+
<td> Read allowed for </td>
|
|
3237
|
+
<td> All states </td>
|
|
3238
|
+
</tr>
|
|
3239
|
+
<tr>
|
|
3240
|
+
<td> Write allowed for </td>
|
|
3241
|
+
<td> All states </td>
|
|
3242
|
+
</tr>
|
|
3243
|
+
</table>
|
|
3244
|
+
</td>
|
|
3245
|
+
<TD ALIGN="Center" VALIGN=top>
|
|
3246
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3247
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3248
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Properties </b></font></center></td>
|
|
3249
|
+
</tr>
|
|
3250
|
+
<tr>
|
|
3251
|
+
<td> label </td>
|
|
3252
|
+
<td> Datasources to which extra links will be added </td>
|
|
3253
|
+
</tr>
|
|
3254
|
+
<tr>
|
|
3255
|
+
<td> unit </td>
|
|
3256
|
+
<td> </td>
|
|
3257
|
+
</tr>
|
|
3258
|
+
<tr>
|
|
3259
|
+
<td> standard unit </td>
|
|
3260
|
+
<td> </td>
|
|
3261
|
+
</tr>
|
|
3262
|
+
<tr>
|
|
3263
|
+
<td> display unit </td>
|
|
3264
|
+
<td> </td>
|
|
3265
|
+
</tr>
|
|
3266
|
+
<tr>
|
|
3267
|
+
<td> format </td>
|
|
3268
|
+
<td> </td>
|
|
3269
|
+
</tr>
|
|
3270
|
+
<tr>
|
|
3271
|
+
<td> max_value </td>
|
|
3272
|
+
<td> </td>
|
|
3273
|
+
</tr>
|
|
3274
|
+
<tr>
|
|
3275
|
+
<td> min_value </td>
|
|
3276
|
+
<td> </td>
|
|
3277
|
+
</tr>
|
|
3278
|
+
<tr>
|
|
3279
|
+
<td> max_alarm </td>
|
|
3280
|
+
<td> </td>
|
|
3281
|
+
</tr>
|
|
3282
|
+
<tr>
|
|
3283
|
+
<td> min_alarm </td>
|
|
3284
|
+
<td> </td>
|
|
3285
|
+
</tr>
|
|
3286
|
+
<tr>
|
|
3287
|
+
<td> max_warning </td>
|
|
3288
|
+
<td> </td>
|
|
3289
|
+
</tr>
|
|
3290
|
+
<tr>
|
|
3291
|
+
<td> min_warning </td>
|
|
3292
|
+
<td> </td>
|
|
3293
|
+
</tr>
|
|
3294
|
+
<tr>
|
|
3295
|
+
<td> delta_time </td>
|
|
3296
|
+
<td> </td>
|
|
3297
|
+
</tr>
|
|
3298
|
+
<tr>
|
|
3299
|
+
<td> delta_val </td>
|
|
3300
|
+
<td> </td>
|
|
3301
|
+
</tr>
|
|
3302
|
+
</table>
|
|
3303
|
+
</td>
|
|
3304
|
+
<TD ALIGN="Right" VALIGN=top>
|
|
3305
|
+
<Table Border=2 Cellpadding=3 CELLSPACING=0>
|
|
3306
|
+
<tr bgcolor="#CCCCFF" class="TableHeadingColor">
|
|
3307
|
+
<td colspan=0> <font size=+1> <center><b> Attribute Event Criteria </b></font></center></td>
|
|
3308
|
+
</tr>
|
|
3309
|
+
<tr>
|
|
3310
|
+
<td> Periodic </td>
|
|
3311
|
+
<td> Not set </td>
|
|
3312
|
+
</tr>
|
|
3313
|
+
<tr>
|
|
3314
|
+
<td> Relative Change </td>
|
|
3315
|
+
<td> Not set </td>
|
|
3316
|
+
</tr>
|
|
3317
|
+
<tr>
|
|
3318
|
+
<td> Absolute Change </td>
|
|
3319
|
+
<td> Not set </td>
|
|
3320
|
+
</tr>
|
|
3321
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3322
|
+
<tr>
|
|
3323
|
+
<td> Archive Periodic </td>
|
|
3324
|
+
<td> Not set </td>
|
|
3325
|
+
</tr>
|
|
3326
|
+
<tr>
|
|
3327
|
+
<td> Archive Relative Change </td>
|
|
3328
|
+
<td> Not set </td>
|
|
3329
|
+
</tr>
|
|
3330
|
+
<tr>
|
|
3331
|
+
<td> Archive Absolute Change </td>
|
|
3332
|
+
<td> Not set </td>
|
|
3333
|
+
</tr>
|
|
3334
|
+
<Tr BGCOLOR="#CCCCFF"><Td><Hr></Td><Td><Hr></Td></Tr>
|
|
3335
|
+
<tr>
|
|
3336
|
+
<td> Push Change event by user code </td>
|
|
3337
|
+
<td> false </td>
|
|
3338
|
+
</tr>
|
|
3339
|
+
<Tr BGCOLOR="#CCCCFF"><Td> </Td><Td> </Td></Tr>
|
|
3340
|
+
<tr>
|
|
3341
|
+
<td> Push Archive event by user code </td>
|
|
3342
|
+
<td> false </td>
|
|
3343
|
+
</tr>
|
|
3344
|
+
<Tr BGCOLOR="#CCCCFF"><Td> </Td><Td> </Td></Tr>
|
|
3345
|
+
<tr>
|
|
3346
|
+
<td> Push DataReady event by user code </td>
|
|
3347
|
+
<td> false </td>
|
|
3348
|
+
</tr>
|
|
3349
|
+
</table>
|
|
3350
|
+
</td>
|
|
3351
|
+
</TR>
|
|
3352
|
+
</table>
|
|
3353
|
+
<br><br>
|
|
3354
|
+
<hr>
|
|
3217
3355
|
<br><br>
|
|
3218
3356
|
<hr>
|
|
3219
3357
|
<a name="states"> </a>
|
|
@@ -24,6 +24,12 @@
|
|
|
24
24
|
<td> String </td>
|
|
25
25
|
<td> "XCS" <br> </td>
|
|
26
26
|
</tr>
|
|
27
|
+
<tr>
|
|
28
|
+
<td> ExtraLinkPath </td>
|
|
29
|
+
<td> extra link path below NXentry, default: instrument:NXinstrument/collection:NXcollection </td>
|
|
30
|
+
<td> String </td>
|
|
31
|
+
<td> "instrument:NXinstrument/collection:NXcollection" <br> </td>
|
|
32
|
+
</tr>
|
|
27
33
|
</table>
|
|
28
34
|
</body>
|
|
29
35
|
</html>
|
|
@@ -131,9 +131,18 @@ class Merger(object):
|
|
|
131
131
|
#: (:obj:`list` <:obj:`str`> ) aliased to add links
|
|
132
132
|
self.linkdatasources = []
|
|
133
133
|
|
|
134
|
+
#: (:obj:`list` <:obj:`str`> ) aliased to add extralinks
|
|
135
|
+
self.extralinkdatasources = []
|
|
136
|
+
|
|
134
137
|
#: (:obj:`list` <:obj:`str`> ) aliased to switch to CanFial mode
|
|
135
138
|
self.canfaildatasources = []
|
|
136
139
|
|
|
140
|
+
#: (:obj:`list` <:obj:`str`> ) extra link path
|
|
141
|
+
self.extralinkpath = []
|
|
142
|
+
|
|
143
|
+
#: (:obj:`list` <:obj:`str`> ) data link path
|
|
144
|
+
self.linkpath = [("data", "NXdata")]
|
|
145
|
+
|
|
137
146
|
#: (:obj:`str`) datasource label
|
|
138
147
|
self.__dsvars = "$datasources."
|
|
139
148
|
|
|
@@ -155,6 +164,8 @@ class Merger(object):
|
|
|
155
164
|
|
|
156
165
|
:param node: dom node
|
|
157
166
|
:type node: :obj:`xml.etree.ElementTree.Element`
|
|
167
|
+
:param ancestors: list with NeXus path nodes (tag, name, type)
|
|
168
|
+
:type ancestors: :obj:`list`< (:obj:`str`,:obj:`str`,:obj:`str`) >
|
|
158
169
|
:returns: xml path
|
|
159
170
|
:rtype: :obj:`str`
|
|
160
171
|
"""
|
|
@@ -178,6 +189,8 @@ class Merger(object):
|
|
|
178
189
|
:type elem1: :obj:`xml.etree.ElementTree.Element`
|
|
179
190
|
:param elem2: second element
|
|
180
191
|
:type elem2: :obj:`xml.etree.ElementTree.Element`
|
|
192
|
+
:param ancestors: list with NeXus path nodes (tag, name, type)
|
|
193
|
+
:type ancestors: :obj:`list`< (:obj:`str`,:obj:`str`,:obj:`str`) >
|
|
181
194
|
:returns: bool varaible if two elements are mergeable
|
|
182
195
|
:rtype: :obj:`bool`
|
|
183
196
|
"""
|
|
@@ -244,6 +257,8 @@ class Merger(object):
|
|
|
244
257
|
:type elem1: :obj:`xml.etree.ElementTree.Element`
|
|
245
258
|
:param elem2: second element
|
|
246
259
|
:type elem2: :obj:`xml.etree.ElementTree.Element`
|
|
260
|
+
:param parent: the given parent node
|
|
261
|
+
:type parent: :obj:`xml.etree.ElementTree.Element`
|
|
247
262
|
"""
|
|
248
263
|
attr2 = elem2.attrib
|
|
249
264
|
texts = []
|
|
@@ -283,11 +298,20 @@ class Merger(object):
|
|
|
283
298
|
|
|
284
299
|
parent.remove(elem2)
|
|
285
300
|
|
|
286
|
-
def __mergeChildren(self, node, ancestors, entrynode=None
|
|
301
|
+
def __mergeChildren(self, node, ancestors, entrynode=None,
|
|
302
|
+
datanode=None, linknode=None):
|
|
287
303
|
""" merge the given node
|
|
288
304
|
|
|
289
305
|
:param node: the given node
|
|
290
306
|
:type node: :obj:`xml.etree.ElementTree.Element`
|
|
307
|
+
:param ancestors: list with NeXus path nodes (tag, name, type)
|
|
308
|
+
:type ancestors: :obj:`list`< (:obj:`str`,:obj:`str`,:obj:`str`) >
|
|
309
|
+
:param entrynode: entry node
|
|
310
|
+
:type entrynode: :class:`xml.etree.ElementTree.Element`
|
|
311
|
+
:param datanode: data node
|
|
312
|
+
:type datanode: :class:`xml.etree.ElementTree.Element`
|
|
313
|
+
:param linknode: link node
|
|
314
|
+
:type linknode: :class:`xml.etree.ElementTree.Element`
|
|
291
315
|
"""
|
|
292
316
|
if node is not None and node.tag != "definition":
|
|
293
317
|
newancestors = tuple(
|
|
@@ -328,11 +352,18 @@ class Merger(object):
|
|
|
328
352
|
self.__getAncestors(child, newancestors)),
|
|
329
353
|
[child])
|
|
330
354
|
|
|
331
|
-
self.__mergeChildren(child, newancestors, entrynode
|
|
355
|
+
self.__mergeChildren(child, newancestors, entrynode,
|
|
356
|
+
datanode, linknode)
|
|
332
357
|
if cName in self.switchable and self.switchdatasources:
|
|
333
358
|
self.__switch(child)
|
|
334
359
|
if cName in self.linkable and self.linkdatasources:
|
|
335
|
-
self.__addlink(
|
|
360
|
+
datanode = self.__addlink(
|
|
361
|
+
child, newancestors, entrynode, datanode,
|
|
362
|
+
self.linkdatasources, self.linkpath)
|
|
363
|
+
if cName in self.linkable and self.extralinkdatasources:
|
|
364
|
+
linknode = self.__addlink(
|
|
365
|
+
child, newancestors, entrynode, linknode,
|
|
366
|
+
self.extralinkdatasources, self.extralinkpath)
|
|
336
367
|
if cName in self.switchable and self.canfaildatasources:
|
|
337
368
|
self.__canfail(child)
|
|
338
369
|
|
|
@@ -465,27 +496,38 @@ class Merger(object):
|
|
|
465
496
|
if stnode is not None and dsnode is not None:
|
|
466
497
|
stnode.attrib["canfail"] = "true"
|
|
467
498
|
|
|
468
|
-
def __addlink(self, node, ancestors, entrynode
|
|
499
|
+
def __addlink(self, node, ancestors, entrynode, linknode, linkdatasources,
|
|
500
|
+
linkpath=None):
|
|
469
501
|
""" add link in NXdata group
|
|
470
502
|
|
|
471
503
|
:param node: the given node
|
|
472
504
|
:type node: :obj:`xml.etree.ElementTree.Element`
|
|
505
|
+
:param ancestors: list with NeXus path nodes (tag, name, type)
|
|
506
|
+
:type ancestors: :obj:`list`< (:obj:`str`,:obj:`str`,:obj:`str`) >
|
|
507
|
+
:param entrynode: root node
|
|
508
|
+
:type entrynode: :class:`xml.etree.ElementTree.Element`
|
|
509
|
+
:param linknode: the given link node
|
|
510
|
+
:type linknode: :obj:`xml.etree.ElementTree.Element`
|
|
511
|
+
:param linkpath: list with NeXus path (name, type)
|
|
512
|
+
:type linkpath: :obj:`list` < (:obj:`str`,:obj:`str`) >
|
|
513
|
+
:returns: the current link node
|
|
514
|
+
:rtype: :obj:`xml.etree.ElementTree.Element`
|
|
473
515
|
"""
|
|
474
516
|
if node is not None:
|
|
475
517
|
dsname = None
|
|
476
518
|
dsnode = None
|
|
477
519
|
|
|
478
520
|
dsname, dsnode = self.__getTextDataSource(
|
|
479
|
-
node,
|
|
521
|
+
node, linkdatasources)
|
|
480
522
|
for child in node:
|
|
481
523
|
cName = unicode(child.tag)
|
|
482
524
|
if cName == 'datasource':
|
|
483
525
|
dsname = child.get("name")
|
|
484
|
-
if dsname in
|
|
526
|
+
if dsname in linkdatasources:
|
|
485
527
|
dsnode = child
|
|
486
528
|
else:
|
|
487
529
|
dsname, dsnode = self.__getTextDataSource(
|
|
488
|
-
child,
|
|
530
|
+
child, linkdatasources)
|
|
489
531
|
if dsnode is not None:
|
|
490
532
|
break
|
|
491
533
|
if dsnode is not None:
|
|
@@ -494,46 +536,76 @@ class Merger(object):
|
|
|
494
536
|
for anc in reversed(ancestors):
|
|
495
537
|
path.append((anc[1], anc[2]))
|
|
496
538
|
linkfound = False
|
|
497
|
-
datanode = None
|
|
498
539
|
if entrynode is not None:
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
540
|
+
if linknode is None:
|
|
541
|
+
# found linknode
|
|
542
|
+
parent = entrynode
|
|
543
|
+
for nm, tp in linkpath:
|
|
544
|
+
node = None
|
|
545
|
+
for gchild in parent:
|
|
546
|
+
if gchild.get("name") == nm \
|
|
547
|
+
and gchild.get("type") == tp:
|
|
548
|
+
node = gchild
|
|
506
549
|
break
|
|
550
|
+
if node is None:
|
|
551
|
+
break
|
|
552
|
+
else:
|
|
553
|
+
parent = node
|
|
554
|
+
else:
|
|
555
|
+
linknode = parent
|
|
556
|
+
|
|
557
|
+
if linknode is not None:
|
|
558
|
+
for dchild in linknode:
|
|
559
|
+
if dchild.get("name") == dsname:
|
|
560
|
+
linkfound = True
|
|
561
|
+
break
|
|
507
562
|
if not linkfound:
|
|
508
|
-
self.__createLink(
|
|
563
|
+
linknode = self.__createLink(
|
|
564
|
+
entrynode, linknode, path, linkpath)
|
|
565
|
+
return linknode
|
|
509
566
|
|
|
510
|
-
def __createLink(self,
|
|
567
|
+
def __createLink(self, entrynode, linknode, path, linkpath=None):
|
|
511
568
|
""" create link on given node
|
|
512
569
|
|
|
513
|
-
:param
|
|
514
|
-
:type
|
|
515
|
-
:param
|
|
516
|
-
:type
|
|
570
|
+
:param entrynode: root node
|
|
571
|
+
:type entrynode: :class:`xml.etree.ElementTree.Element`
|
|
572
|
+
:param linknode: the given link node
|
|
573
|
+
:type linknode: :obj:`xml.etree.ElementTree.Element`
|
|
517
574
|
:param path: list with NeXus path (name, type)
|
|
518
|
-
:type
|
|
575
|
+
:type path: :obj:`list` < (:obj:`str`,:obj:`str`) >
|
|
576
|
+
:param linkpath: list with NeXus path (name, type)
|
|
577
|
+
:type linkpath: :obj:`list` < (:obj:`str`,:obj:`str`) >
|
|
578
|
+
:returns: the current link node
|
|
579
|
+
:rtype: :obj:`xml.etree.ElementTree.Element`
|
|
519
580
|
"""
|
|
520
|
-
|
|
521
581
|
if path:
|
|
522
582
|
target, dsname = path[0]
|
|
523
583
|
if target:
|
|
524
|
-
if
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
584
|
+
if linknode is None:
|
|
585
|
+
linknode = entrynode
|
|
586
|
+
if linkpath is None:
|
|
587
|
+
linkpath = [("data", "NXdata")]
|
|
588
|
+
for nm, tp in linkpath:
|
|
589
|
+
for gchild in linknode:
|
|
590
|
+
if gchild.get("name") == nm \
|
|
591
|
+
and gchild.get("type") == tp:
|
|
592
|
+
linknode = gchild
|
|
593
|
+
break
|
|
594
|
+
else:
|
|
595
|
+
node = etree.Element("group")
|
|
596
|
+
linknode.append(node)
|
|
597
|
+
linknode = node
|
|
598
|
+
linknode.attrib["type"] = tp
|
|
599
|
+
linknode.attrib["name"] = nm
|
|
529
600
|
for gname, gtype in path[1:]:
|
|
530
601
|
target = "%s:%s/" % (gname, gtype) + target
|
|
531
602
|
target = "/" + target
|
|
532
603
|
if dsname:
|
|
533
604
|
link = etree.Element("link")
|
|
534
|
-
|
|
605
|
+
linknode.append(link)
|
|
535
606
|
link.attrib["target"] = "%s" % target
|
|
536
607
|
link.attrib["name"] = dsname
|
|
608
|
+
return linknode
|
|
537
609
|
|
|
538
610
|
def collect(self, components):
|
|
539
611
|
""" collects the given components in one DOM tree
|
|
@@ -89,6 +89,7 @@ class NXSConfigServer(tango.LatestDeviceImpl):
|
|
|
89
89
|
self.set_state(tango.DevState.ON)
|
|
90
90
|
self.get_device_properties(self.get_device_class())
|
|
91
91
|
self.xmlc.versionLabel = self.VersionLabel
|
|
92
|
+
self.xmlc.extraLinkPath = self.ExtraLinkPath
|
|
92
93
|
|
|
93
94
|
def always_executed_hook(self):
|
|
94
95
|
""" Always excuted hook method
|
|
@@ -263,6 +264,39 @@ class NXSConfigServer(tango.LatestDeviceImpl):
|
|
|
263
264
|
return False
|
|
264
265
|
return True
|
|
265
266
|
|
|
267
|
+
def read_ExtraLinkDataSources(self, attr):
|
|
268
|
+
""" Read ExtraLinkDataSources attribute
|
|
269
|
+
|
|
270
|
+
:param attr: extra link datasources attribute
|
|
271
|
+
:type attr: :class:`tango.Attribute`
|
|
272
|
+
"""
|
|
273
|
+
self.debug_stream("In read_ExtraLinkDataSources()")
|
|
274
|
+
attr.set_value(self.xmlc.extralinkdatasources or "")
|
|
275
|
+
|
|
276
|
+
def write_ExtraLinkDataSources(self, attr):
|
|
277
|
+
""" Write ExtraLinkDataSources attribute
|
|
278
|
+
|
|
279
|
+
:param attr: extra link datasources attribute
|
|
280
|
+
:type attr: :class:`tango.Attribute`
|
|
281
|
+
"""
|
|
282
|
+
self.debug_stream("In write_ExtraLinkDataSources()")
|
|
283
|
+
if self.is_ExtraLinkDataSources_write_allowed():
|
|
284
|
+
self.xmlc.extralinkdatasources = attr.get_write_value() or ""
|
|
285
|
+
else:
|
|
286
|
+
self.warn_stream("To change the settings please close the server.")
|
|
287
|
+
raise Exception(
|
|
288
|
+
"To change the settings please close the server.")
|
|
289
|
+
|
|
290
|
+
def is_ExtraLinkDataSources_write_allowed(self):
|
|
291
|
+
""" ExtraLinkDataSources attribute Write State Machine
|
|
292
|
+
|
|
293
|
+
:returns: True if the operation allowed
|
|
294
|
+
:rtype: :obj:`bool`
|
|
295
|
+
"""
|
|
296
|
+
if self.get_state() in [tango.DevState.RUNNING]:
|
|
297
|
+
return False
|
|
298
|
+
return True
|
|
299
|
+
|
|
266
300
|
def read_CanFailDataSources(self, attr):
|
|
267
301
|
""" Read CanFailDataSources attribute
|
|
268
302
|
|
|
@@ -1135,6 +1169,11 @@ class NXSConfigServerClass(tango.DeviceClass):
|
|
|
1135
1169
|
[tango.DevString,
|
|
1136
1170
|
"version label",
|
|
1137
1171
|
["XCS"]],
|
|
1172
|
+
'ExtraLinkPath':
|
|
1173
|
+
[tango.DevString,
|
|
1174
|
+
"extra link NeXus path below NXentry. "
|
|
1175
|
+
"Default: instrument:NXinstrument/collection:NXcollection",
|
|
1176
|
+
["instrument:NXinstrument/collection:NXcollection"]],
|
|
1138
1177
|
}
|
|
1139
1178
|
|
|
1140
1179
|
#: (:obj:`dict` <:obj:`str`, \
|
|
@@ -1299,6 +1338,15 @@ class NXSConfigServerClass(tango.DeviceClass):
|
|
|
1299
1338
|
'description': "JSON list of datasources"
|
|
1300
1339
|
"to which links will be added",
|
|
1301
1340
|
}],
|
|
1341
|
+
'ExtraLinkDataSources':
|
|
1342
|
+
[[tango.DevString,
|
|
1343
|
+
tango.SCALAR,
|
|
1344
|
+
tango.READ_WRITE],
|
|
1345
|
+
{
|
|
1346
|
+
'label': "Datasources to which extra links will be added",
|
|
1347
|
+
'description': "JSON list of datasources"
|
|
1348
|
+
"to which extra links will be added",
|
|
1349
|
+
}],
|
|
1302
1350
|
'CanFailDataSources':
|
|
1303
1351
|
[[tango.DevString,
|
|
1304
1352
|
tango.SCALAR,
|