Пример #1
0
    def status(self, item_id):
        """
        get item status

        Args:
            item_id: item id (oid required)

        Returns:
            item status (integer)

        Raises:
            ResourceNotFound: item is not found
        """
        if is_oid(item_id):
            tp, i = parse_oid(item_id)
        else:
            tp = 'lvar'
            i = item_id
        if tp == 'unit':
            return self.unit_status(i)
        if tp == 'sensor':
            return self.sensor_status(i)
        if tp == 'lvar':
            return self.lvar_status(i)
        raise ResourceNotFound
Пример #2
0
    def value(self, item_id, default=''):
        """
        get item value

        Args:
            item_id: item id (oid required)

        Optional:
            default: value if null (default is empty string)

        Returns:
            item value

        Raises:
            ResourceNotFound: item is not found
        """
        if is_oid(item_id):
            tp, i = parse_oid(item_id)
        else:
            tp = 'lvar'
            i = item_id
        if tp == 'unit':
            return self.unit_value(i, default)
        if tp == 'sensor':
            return self.sensor_value(i, default)
        if tp == 'lvar':
            return self.lvar_value(i, default)
        raise ResourceNotFound
Пример #3
0
    def state(self, item_id):
        """
        get item state

        Args:
            item_id: item id (oid required)

        Returns:
            item status/value dict

        Raises:
            ResourceNotFound: item is not found

        @var_out status
        @var_out value
        """
        if is_oid(item_id):
            tp, i = parse_oid(item_id)
        else:
            tp = 'lvar'
            i = item_id
        if tp == 'unit':
            return {'status': self.unit_status(i), 'value': self.unit_value(i)}
        if tp == 'sensor':
            return {
                'status': self.sensor_status(i),
                'value': self.sensor_value(i)
            }
        if tp == 'lvar':
            return {'status': self.lvar_status(i), 'value': self.lvar_value(i)}
        raise ResourceNotFound
Пример #4
0
def get_controller(controller_id):
    if not controller_lock.acquire(timeout=eva.core.config.timeout):
        logging.critical('controller_lock locking broken')
        eva.core.critical()
        return
    try:
        if not controller_id:
            raise InvalidParameter('controller id not specified')
        if is_oid(controller_id):
            tp, i = parse_oid(controller_id)
        else:
            tp, i = None, controller_id
        if i.find('/') > -1:
            i = i.split('/')
            if len(i) > 2:
                raise InvalidParameter('controller type unknown')
            if i[0] == 'uc' and i[1] in remote_ucs and (tp is None
                                                        or tp == 'remote_uc'):
                return remote_ucs[i[1]]
            if i[0] == 'lm' and i[1] in remote_lms and (tp is None
                                                        or tp == 'remote_lm'):
                return remote_lms[i[1]]
        raise ResourceNotFound
    finally:
        controller_lock.release()
Пример #5
0
def get_item(item_id):
    if not item_id: return None
    if is_oid(item_id):
        tp, i = parse_oid(item_id)
    else:
        i = item_id
    item = None
    if i.find('/') > -1:
        if i in items_by_full_id: item = items_by_full_id[i]
    elif not eva.core.config.enterprise_layout and i in items_by_id:
        item = items_by_id[i]
    return None if item and is_oid(item_id) and item.item_type != tp else item
Пример #6
0
def get_item(i):
    if is_oid(i):
        _tp, _i = parse_oid(i)
    else:
        return None
    if _tp == 'unit':
        gi = eva.sfa.controller.uc_pool.units
    elif _tp == 'sensor':
        gi = eva.sfa.controller.uc_pool.sensors
    elif _tp == 'lvar':
        gi = eva.sfa.controller.lm_pool.lvars
    else:
        return None
    if not _i in gi: return None
    return gi[_i]
Пример #7
0
def get_item(item_id):
    if not item_id: return None
    if is_oid(item_id):
        tp, i = parse_oid(item_id)
    else:
        i = item_id
        tp = None
    if tp == 'lmacro':
        return get_macro(i)
    elif tp == 'lcycle':
        return get_cycle(i)
    elif tp == 'dmatrix_rule':
        return get_dm_rule(i)
    elif tp == 'job':
        return get_job(i)
    item = None
    if i.find('/') > -1:
        if i in items_by_full_id: item = items_by_full_id[i]
    elif not eva.core.config.enterprise_layout and i in items_by_id:
        item = items_by_id[i]
    return None if item and is_oid(item_id) and item.item_type != tp else item