コード例 #1
0
ファイル: handler.py プロジェクト: maklaut/lunaport_worker
    def hndl_usr(usr_cfg):
        """ Handle particular user notification settings
            and apply to the event.
        """
        xmpp_cfg = usr_cfg.get('cfg', {}).get('xmpp')
        if xmpp_cfg and (xmpp_cfg.get(event) or (
                        (t_resolution is False) and xmpp_cfg.get('on_failed'))):
            try:
                send_xmpp(event, test, case, t_resolution,
                          usr_cfg['user']['login'], worker_cfg.get('xmpp'))
            except Exception as e:
                logger.error(str(e))

        email_cfg = usr_cfg.get('cfg').get('email')
        if email_cfg and (email_cfg.get(event) or (
                (t_resolution is False) and email_cfg.get('on_failed'))):
            try:
                send_email(event, test, case, t_resolution,
                           usr_cfg['user']['login'], worker_cfg.get('email'))
            except Exception as e:
                logger.error(str(e))
コード例 #2
0
ファイル: handler.py プロジェクト: maklaut/lunaport_worker
def test(event, test, t_resolution, case, tracker_cfg=None, tank_msg=None):
    """ 
    Handle test resource related events like: start, finish.
    Fetch notification configs and send msgs them if necessary.
    """
    ext = {'test_id': test.get('id')}
    logger = get_logger(**ext)

    tracker_cfg = tracker_cfg or case.get('notification')
    if not tracker_cfg:
        msg = ''.join([
            'Can\'t fetch issue_tracker notifycation',
            'settings for case: {}'.format(case.get('name'))
        ])
        logger.warning(msg)
        return

    if tracker_cfg.get(event) or ((t_resolution is False) and tracker_cfg.get('on_failed')):
        try:
            issue = lunaport_c1.issue_get(test.get('issue'))
        except LunaportClientError as e:
            logger.error(str(e))

        try:
            send_to_tracker(event, test, case, t_resolution, issue,
                            worker_cfg.get('issue_providers'))
        except Exception as e:
            logger.warning(str(e))

    try:
        usrs_cfgs = lunaport_c1.notifctn_get(case.get('name'))
    except LunaportClientError as e:
        logger.warning(str(e))
        return

    def hndl_usr(usr_cfg):
        """ Handle particular user notification settings
            and apply to the event.
        """
        xmpp_cfg = usr_cfg.get('cfg', {}).get('xmpp')
        if xmpp_cfg and (xmpp_cfg.get(event) or (
                        (t_resolution is False) and xmpp_cfg.get('on_failed'))):
            try:
                send_xmpp(event, test, case, t_resolution,
                          usr_cfg['user']['login'], worker_cfg.get('xmpp'))
            except Exception as e:
                logger.error(str(e))

        email_cfg = usr_cfg.get('cfg').get('email')
        if email_cfg and (email_cfg.get(event) or (
                (t_resolution is False) and email_cfg.get('on_failed'))):
            try:
                send_email(event, test, case, t_resolution,
                           usr_cfg['user']['login'], worker_cfg.get('email'))
            except Exception as e:
                logger.error(str(e))

    map(hndl_usr, usrs_cfgs)

    if event != 'on_start_failed':
        return
    # Test was scheduled but execution failed on Tank side.
    # XXX: Only *initiator* user will be notified with XMPP and email.
    try:
        send_xmpp(event, test, case, None, test['initiator'],
                  worker_cfg.get('xmpp'), tank_msg=tank_msg.get('tank_msg'))
        send_email(event, test, case, None, test['initiator'],
                   worker_cfg.get('email'), tank_msg=tank_msg.get('tank_msg'))
    except Exception as e:
        logger.error(str(e))