Tango Access Control in fedora

Hi,

I am using Tango on Fedora 19 os and I am trying to apply tango access management for different hosts.The documentation mentioned that an instance of Starter device server should be running for the control system management. I checked my jive and could not find any such server registered. Nor I could find any such process running on my system. Astor do not show any other host than root.

Is there any alternative? What should I do?

Thanks for your help.

Regards,
Snehal

Dear Snehal,

The starter device server is available on sourceforge repository

You should start an instance of the Starter device server per host. The instance name should be the hostname.
It is the only server that should be automatically started at each host bootstrap.
The Starter device server will manange the starting of all the other device servers
Cheers

How to proceed to declare a new host.

  1. You should first have a compiled version of the Starter device server available for your platform
  2. start astor, with the correct TANGO_HOST pointing on your database server.
  3. On astor, click on command->“add a new host”, then give the host name, the host usage (few words describing the role of your host) and the host family (the branch in which you want to classift this host. If you let it empty it will be in “miscellaneous”
    Then fill-up the Device server PATH, It is the place where the starter will find the executable files of each device server it has to start. then click on “Create”
  4. log on your host and start the starter by typing “Starter myhostname”
  5. add a script to automatically start the Starter at boot time (e.g. in /etc/init.d)
  6. repeat the same for every host composing your control system
  7. restart astor and see the device tree.
  8. on each leaf of astor tree, you can open a control panel and manage new device servers

Hope it helps

Hi Jean,

Thanks a lot.

On another curious note, I wanted to know what is the functionality of Starter device server. As per my understanding, Starter helps in setting up device servers held at the configured path. Is there any other important function I am missing in my understanding?

The root of this query lies under the observation that under Ubuntu environment, I have to start both Starter and tango-db services to get my tango running, whereas tango runs well on fedora without the Starter service being started. So is my tango (running on fedora) devoid of any other features/functionality ?

Thanks for your help again.

Regards,
Snehal

Hi Snehal

The starter device server provides you a complete set of utilities for managing all the device servers of a host.
In a distributed control system, you usually use several different hosts, therefore you need a Starter instance per host.
The Astor GUI is the user interface to the list of starter.
have a look at the documentation of the couple Astor/Starter here.
This couple, allows you to start/stop/check/configure all your device servers, you can also monitor the polling, restart them automatically in case of crash, check when it has been exported, and many other features you can find in the documentation.
In astor, each starter is seen as a leaf in a tree. right clicking on a leaf shows you all the possibilities. Have a look at it.

However, you can perfectly run a simple tango system without Starter. Only the database server is necessary. Starter is a helper tool for a easier administration of your system. There should be no difference between fedora and ubuntu on this side.
Once again, Starter/Astor is useful if your system is running over several hosts. In a single host system, its added value is less obvious.

Hi Jean,

Thanks for your inputs.

However, I had one last query. I followed all the steps you mentioned earlier. I could see my hosts, start -stop respective device servers. The only problem I am now facing is in running servers written in python. I had few servers written in cpp and few in python. I have written all paths in ‘StartDsPath’ property. The cpp servers run fine but whenever I try to start my python-written server, it says it could not find it from the given path ( I have given the correct path).

What should I do?

Thanks and regards,
Snehal

Hi,

The starter can’t start directly py files.

On windows, you can create a *.bat file calling the python file:
MyDevice.bat:
python “c:\Devices\MyDevice.py” %1
Then, you just have to add the directory of this file to the starter startDsPath

On linux, you can use a bash file or a symlink: ln -s pwd/MyDevice.py MyDevice

With the new options on Pogo 9.2.x, there is an option to package python device server as python package. With this structure, when you install the python package (python setup.py install), it will create a script file for direct launching frtom any terminal/console (using entry_points in setup.py).

Hey,

Thankyou so much !

Hello,

I am trying to compile tango-8.1.2c (patched and stable release both) on Fedora 22 and 23. I am stuck for compiling utils/notifd2db with "libs/libtango.so: undefined reference to Tango::ranges_type2const.. messages. Debian package claim to solve it on dfsg-5 and 7 but I am trying to compile from tar source i.e. ‘tang-8.1.2c.tar.gz’ and
‘tango-8.1.2c+dfsg.orig’.

I checked that ranges_type2const are defined in tango-8.1.2/lib/cpp/server/attribute.cpp but
cpp/server/.libs/libtango.so give undefined reference to Tango::ranges_type2const...

Following are compilation messages

Making install in utils
make[1]: Entering directory ‘/opt/tangosoftwares/tango-8.1.2/utils’
Making install in notifd2db
make[2]: Entering directory ‘/opt/tangosoftwares/tango-8.1.2/utils/notifd2db’
/bin/sh ../../libtool --tag=CXX --mode=link g++ -g -O2 -std=c++11 -D_REENTRANT -DOMNI_UNLOADABLE_STUBS -o notifd2db notifd2db.o -L../../lib/cpp/server -ltango -L../../lib/cpp/log4tango/src -llog4tango -L/usr/local/lib -lzmq -lpthread -lnsl -ldl -L/usr/local/lib -lomniORB4 -lomniDynamic4 -lCOS4 -lpthread -lomnithread -lnsl -L/usr/local/lib -lpthread -lomnithread -lpthread
libtool: link: g++ -g -O2 -std=c++11 -D_REENTRANT -DOMNI_UNLOADABLE_STUBS -o .libs/notifd2db notifd2db.o -L../../lib/cpp/server /opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so -L../../lib/cpp/log4tango/src /opt/tangosoftwares/tango-8.1.2/lib/cpp/log4tango/src/.libs/liblog4tango.so -L/usr/local/lib /usr/local/lib/libzmq.so -ldl -lomniORB4 -lomniDynamic4 -lCOS4 -lnsl -lomnithread -lpthread -Wl,-rpath -Wl,/usr/local/lib
/opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const<unsigned int>::str' /opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const::str’
/opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const<unsigned short>::str' /opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const::str’
/opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const<long>::str' /opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const::str’
/opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const<float>::str' /opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to Tango::ranges_type2const::str’
/opt/tangosoftwares/tango-8.1.2/lib/cpp/server/.libs/libtango.so: undefined reference to `Tango::ranges_type2const::str’
collect2: error: ld returned 1 exit status
Makefile:362: recipe for target ‘notifd2db’ failed
make[2]: *** [notifd2db] Error 1
make[2]: Leaving directory ‘/opt/tangosoftwares/tango-8.1.2/utils/notifd2db’
Makefile:338: recipe for target ‘install-recursive’ failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory ‘/opt/tangosoftwares/tango-8.1.2/utils’
Makefile:423: recipe for target ‘install-recursive’ failed
make: *** [install-recursive] Error 1

Please mention how I can resolve or overcome this error…

Regards,
Jitendra

Hello,

Which release of c++ compiler is installed on Fedora 22 or 23 (c++ -v)?
Is it a release 5 c++?

regards

Emmanuel

Hello Manu,

Thanks for responding, I am using

c++ (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.

Regards,
Jitendra

Hello,

Sorry for this late reply.
I am quite sure that GCC 5 is supported starting at Tango 9. Nevertheless, because we actually have some problems with SF web site,
I can’t confirm this. When SF will be back into operation, I will check this

Regards

Emmanuel

Thanks for the reply, I could compile tango-8.1.2-patched on gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2) on Fresh Install of FC 22-3 version.
I will update about Fedora 23.

Regards,
Jitendra