def __init__(self, door_name=None): if door_name is None: door_name = getattr(sardanacustomsettings, 'UNITTEST_DOOR_NAME') registerExtensions() try: self.door = Device(door_name) self.ms = self.door.macro_server except ValueError: raise ValueError('The door %s does not exist' % (door_name)) self.controllers = None self.cts = None self.motors = None self.pseudos = None self.zerods = None self.oneds = None self.twods = None try: self.env = self.ms.getEnvironment()['_SAR_DEMO']['elements'] + \ list(self.ms.getEnvironment()['_SAR_DEMO']['controllers']) except KeyError: err = 'sar_demo has not been executed (or door %s not ready)' % \ door_name raise RuntimeError(err)
def main(): parser = argparse.ArgumentParser( description="Change Tango DB in Sardana measurement group " "configurations" ) parser.add_argument("pool", type=str, help="Pool device name") parser.add_argument("tango_db_pqdn", action="store", type=str, help="old Tango database e.g. tbl09:10000") parser.add_argument("tango_db_fqdn", action="store", type=str, help="new Tango database e.g. tbl09.cells.es:10000") parser.add_argument("--verbose", action="store_true") args = parser.parse_args() registerExtensions() device = taurus.Device(args.pool) try: hwinfo = device.getHWObj().info() except tango.DevFailed: print("Pool {} is not exported. Hint: start the DS. Exiting...".format( args.pool)) sys.exit(-1) dev_class = hwinfo.dev_class if dev_class == "Pool": change_mntgrp(device, args.tango_db_pqdn, args.tango_db_fqdn, args.verbose) else: print("Invalid model, expected Pool. Exiting...") sys.exit(-1) print("IMPORTANT: now restart the {0} device server".format(dev_class))
def setUp(self): """Start Pool DS and register extensions. """ # Discover the Pool launcher script poolExec = whichexecutable.whichfile("Pool") # register Pool server pool_ds_name = "Pool/" + self.pool_ds_name pool_free_ds_name = get_free_server(PyTango.Database(), pool_ds_name) self._starter = ProcessStarter(poolExec, pool_free_ds_name) # register Pool device dev_name_parts = self.pool_name.split('/') prefix = '/'.join(dev_name_parts[0:2]) start_from = int(dev_name_parts[2]) self.pool_name = get_free_device(PyTango.Database(), prefix, start_from) self._starter.addNewDevice(self.pool_name, klass='Pool') # start Pool server self._starter.startDs() # register extensions so the test methods can use them registerExtensions() self.pool = Device(self.pool_name)
def init(self, door_name=None): if door_name is None: door_name = getattr(sardanacustomsettings, 'UNITTEST_DOOR_NAME') # TODO: As a workaround: check with PyTango that the door is running # in case of exception raise a RuntimeError. Ideally it should be done # just using taurus try: import PyTango d = PyTango.DeviceProxy(door_name) # when building docs, in RTD environment, PyTango is a mock assert is_number(d.ping()) except: raise RuntimeError("Door %s is not running" % door_name) registerExtensions() self.door = Device(door_name) self.ms = self.door.macro_server self.controllers = None self.cts = None self.motors = None self.pseudos = None self.zerods = None self.oneds = None self.twods = None try: self.env = self.ms.getEnvironment()['_SAR_DEMO']['elements'] + \ list(self.ms.getEnvironment()['_SAR_DEMO']['controllers']) except KeyError: err = 'sar_demo has not been executed (or door %s not ready)' % \ door_name raise RuntimeError(err) self.ready = True