Ejemplo n.º 1
0
    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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
 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
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
    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