def test_add_member(self): device_name = '%s/sub/1' % self.DOMAIN_NAME group_name = 'capabilities' # self.stop_device_server('Subarray_DS') # self.start_device_server('Subarray_DS') dp = DeviceProxy(device_name) dp.set_logging_level(5) member_device_name_1 = '%s/capability/sub1cap1' % self.DOMAIN_NAME data_1 = json.dumps({ 'group_name': group_name, 'device_name': member_device_name_1 }) dp.command_inout('add_member', data_1) self.assertTrue( member_device_name_1 in dp.get_property(group_name)[group_name]) member_device_name_2 = '%s/capability/sub1cap2' % self.DOMAIN_NAME data_2 = json.dumps({ 'group_name': group_name, 'device_name': member_device_name_2 }) dp.command_inout('add_member', data_2) items = dp.get_property(group_name)[group_name] self.assertTrue(member_device_name_2 in items) self.assertEqual(len(items), 2) dp.command_inout('remove_member', data_2) items = dp.get_property(group_name)[group_name] self.assertFalse(member_device_name_2 in items) self.assertEqual(len(items), 1) dp.command_inout('remove_member', data_1) self.assertFalse( member_device_name_1 in dp.get_property(group_name)[group_name])
def create_properties(device_name, addr, axis): CTRL_DEVICE = "sxr/SerialDS/1" MOTOR_NAME = "mcc_" property_names = ['Address', 'Motor', 'CtrlDevice'] mcc = DeviceProxy(device_name) prop_dict = mcc.get_property(property_names) prop_dict["CtrlDevice"] = CTRL_DEVICE prop_dict['Motor'] = int(axis) prop_dict['Address'] = int(addr) prop_dict['Alias'] = MOTOR_NAME + (addr) + "_" + axis mcc.put_property(prop_dict)
def _initCrate(macro, ctrl_obj, crate_nr): # It initializes all axis found in the same crate # than the target motor given. # We could have decided to initialize all motors in the controller. # Define axes range to re-initialize after reset # These are the motors in the same crate than the given motor first = crate_nr * 10 last = first + 8 macro.info('Initializing Crate number %s:' % crate_nr) macro.info('axes range [%s,%s]' % (first, last)) # Get the alias for ALL motors for the controller motor_list = ctrl_obj.elementlist macro.debug("Element in controller: %s" % repr(motor_list)) # Crate a proxy to each element and # get the axis for each of them for alias in motor_list: m = DeviceProxy(alias) a = int(m.get_property('axis')['axis'][0]) # Execute init command for certain motors: if first <= a <= last: macro.debug('alias: %s' % alias) macro.debug('device name: %s' % m.name()) macro.debug('axis number: %s' % a) macro.info("Initializing %s..." % alias) try: m.command_inout('Init') # HOTFIX!!! only if offsets are lost 24/12/2016 # print 'IMPORTANT: OVERWRITTING centx/centy offsets!' # if alias == 'centx': # centx_offset = -4.065240223463690 # m['offset'] = centx_offset # print 'centx offset overwritten: %f' % centx_offset # if alias == 'centy': # centy_offset = -2.759407821229050 # m['offset'] = centy_offset # print 'centy offset overwritten: %f' % centy_offset except Exception: macro.error('axis %s cannot be initialized' % alias)
def SetCentralLoggingLevel(self, element_devices_and_levels): CentralLoggingLevel = element_devices_and_levels[0][:] CentralLoggingDevice = element_devices_and_levels[1][:] i = 0 while i < len(CentralLoggingLevel[:]): self.info_stream("%s,%s", CentralLoggingLevel[i], CentralLoggingDevice[i]) dev1 = DeviceProxy(CentralLoggingDevice[i]) dev1.centralLoggingLevel = CentralLoggingLevel[i] property_names = [ "logging_level", "logging_target", ] dev_properties = dev1.get_property(property_names) dev_properties["logging_level"] = ["DEBUG"] dev_properties["logging_target"].append( "device::central/cdev/cdev1") dev1.put_property(dev_properties) dev1.add_logging_target("device::central/cdev/cdev1") i += 1
def SetElementLoggingLevel(self, element_devices_and_levels): ElementLoggingLevel = element_devices_and_levels[0][:] ElementLoggingDevice = element_devices_and_levels[1][:] i = 0 while i < len(ElementLoggingLevel[:]): self.info_stream("%s,%s", ElementLoggingLevel[i], ElementLoggingDevice[i]) dev1 = DeviceProxy(ElementLoggingDevice[i]) dev1.elementLoggingLevel = ElementLoggingLevel[i] property_names = [ "logging_level", "logging_target", ] dev_properties = dev1.get_property(property_names) dev_properties["logging_level"] = ["DEBUG"] dev_properties["logging_target"].append( "device::ellogger/elem/elem1") dev1.put_property(dev_properties) dev1.add_logging_target("device::ellogger/elem/elem1") i += 1
def status(use_json=False): """ Check server configuration """ hostname = platform.uname()[1] starter = "tango/admin/" + hostname starter_dp = DeviceProxy(starter) log_file_location = starter_dp.get_property( "LogFileHome")["LogFileHome"][0] running_servers = set(starter_dp.DevGetRunningServers(True)) domain = config["domain"] if servers.issubset(running_servers): info = json.dumps( { "config_file": CONFIG_FILE, "log_location": log_file_location, "status": "OK", "servers_configured": list(servers), "servers_running": list(running_servers), }, indent=4) if use_json: print info else: log.info(info) else: not_running = servers.difference(running_servers) if use_json: print json.dumps( { "config_file": CONFIG_FILE, "log_location": log_file_location, "servers_configured": list(servers), "servers_running": list(running_servers), "servers_not_running": list(not_running), "status": "FAULT" }, indent=4) else: for s in not_running: log.info("Configured server {} is not running".format(s))
def get_device_properties(self, device_pattern): """ Function retrieves properties of devices consistent with device_pattern :param device_pattern: server name pattern (* available) :type device_pattern: string :return: dictionary with devices as keys and lists of properties as values :rtype: dict """ device_properties = {} device_list = self.get_device_list(device_pattern) for device in device_list: device_proxy = DeviceProxy(device) properties_list = [] for d in device_proxy.get_property_list('*'): x = device_proxy.get_property(d) properties_list.extend(x.items()) if device not in device_properties: device_properties[device] = properties_list return device_properties